當前位置:編程學習大全網 - 網絡軟體 - 成員函數壹定是內聯函數嗎?

成員函數壹定是內聯函數嗎?

不是

壹、內聯函數類似於C裏邊的宏,只是宏經常有壹些不安全因素,比如 宏定義 add() 是 a+b,調用的時候宏定義直接展開,不做任何的判斷,如果調用res = add()*c; 得到的代碼就是res = a+b*c;不是想要的結果。

內聯函數可以理解成壹個安全的宏定義,他就是壹個真正的函數,只是不用壓棧出棧,速度快,而且比宏定義安全,所以利用 短且頻率 比較高的函數可以寫成內聯函數inline。

二、 內聯函數在編譯時,會將此內聯函數代碼直接編譯到調用函數之處。減少了壹次函數調用時的跳轉、數據壓棧等操作。所以相比調用行數,內聯函數的執行效率要相對高點。不過也正因為如此,所以最終生成的程序文件要稍微大點。

1.內聯函數可減少cpu的系統開銷,並且提高整體程序的速度,但當內聯函數很大時,會有相反的作用,因此壹般比較小的函數才使用內聯函數。

2.有兩種內聯函數的聲明方法,壹種是在函數前使用inline關鍵字;另壹種是在類的內部定義函數的代碼,這樣的函數將自動轉換為內聯函數,而且沒必要將inline放在函數前面。

3.內聯是壹種對編譯器的請求,像register說明符壹樣。下面這些情況會阻止編譯器服從這項請求.如果函數中包含有循環,switch或goto語句,遞歸函數,含有static的函數.

  • 上一篇:暴力迪吧全集視頻
  • 下一篇:李子柒破吉尼斯世界紀錄,她對中華文化的宣揚有多大幫助?
  • copyright 2024編程學習大全網