成員函數與內聯函數


11.關於成員函數特征的下列描述中,______是錯誤的.  

  1. 成員函數一定是內聯函數   B. 成員函數可以重載    

C. 成員函數可以設置缺省參數值   D. 成員函數可以是靜態的   [A]

[解析] 因為成員函數可以在類體內定義,也可以在類體外定義,所以成員函數不一定都是內聯函數;成員函數可以重載,可以設置參數的默認值,成員函數可以是靜態的。

 

內聯函數是指在調用衣櫃函數時,不把他當作調用而處理,而是把這個函數的代碼直接在調用他的函數里展開的形式,也可以理解為內聯函數就相當於一段代碼。不需要調用,效率就高些。成員函數是類中聲明的函數,屬於類。當然如果在類中定義的成員函數自動變為內聯函數。

 

成員函數是屬於對象的, 靜態函數才是屬於類的. 如果在類體內定義的函數,則會被編譯器默認為內聯函數, 如果把函數的定義放在外面,且在函數的聲明的時候加上關鍵字inline,則函數變為內聯函數,否則為成員函數.

 

內聯函數類似於C里邊的宏,只是宏經常有一些不安全因素,比如 宏定義 add() 是 a+b,調用的時候宏定義直接展開,不做任何的判斷,如果調用res = add()*c; 得到的代碼就是res = a+b*c;不是想要的結果。 
   內聯函數可以理解成一個安全的宏定義,他就是一個真正的函數,只是不用壓棧出棧,速度快,而且比宏定義安全,所以利用 短且頻率 比較高的函數可以寫成內聯函數inline。 
   內聯函數在編譯時,會將此內聯函數代碼直接編譯到調用函數之處。減少了一次函數調用時的跳轉、數據壓棧等操作。所以相比調用行數,內聯函數的執行效率要相對高點。不過也正因為如此,所以最終生成的程序文件要稍微大點。
 
1.內聯函數可減少cpu的系統開銷,並且提高整體程序的速度,但當內聯函數很大時,會有相反的作用,因此一般比較小的函數才使用內聯函數。
2.有兩種內聯函數的聲明方法,一種是在函數前使用inline關鍵字;另一種是在類的內部定義函數的代碼,這樣的函數將自動轉換為內聯函數,而且沒必要將inline放在函數前面。
3.內聯是一種對編譯器的請求,像register說明符一樣。下面這些情況會阻止編譯器服從這項請求.如果函數中包含有循環,switch或goto語句,遞歸函數,含有static的函數.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM