程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 函數調用和inline作用

函數調用和inline作用

編輯:C++入門知識

函數調用的開銷:

  函數被調用時,要有函數調用和返回。要保存當前程序上下文信息,以便函數調用完畢後返回原來的地方,繼續執行程序。將函數的參數進行壓棧、出棧,執行函數,函數調用完畢後釋放內部變量占用的內存。

inline作用:

  將函數聲明為inline,是對編譯器的一種建議,編譯器可以選擇不進行inline。大多數編譯器是在編譯過程中進行inline。所以不能對virtual函數進行inline,因為編譯的時候編譯器不知道該調用哪個函數。編譯器也不對通過函數指針進行的調用實施inlining.

  不要輕易的對構造函數和析構函數進行inline,因為即使看著函數體是空的,其實內部編譯器會產生一些代碼,比如添加默認構造函數,默認拷貝構造函數等等。

  將函數聲明為inline,編譯器不把它當做是一個函數,而是類似於把函數代碼拷貝到原來的地方,這樣就省下了函數調用的開銷。

  將大多數inlining限制在小型、被頻繁調用的函數上。內聯函數會在每一處調用函數的地方進行代碼復制,會使產生的代碼膨脹,對於函數很大來說,這樣獲得的速度提高會很小甚至沒有。所以對於遞歸,循環等不進行inline。

  inline函數要將聲明和定義放在一塊,不然沒有效果。在類內部的函數定義會自動擴展成inline。在類外部則需顯式加上inline聲明。

  通常要將inline函數放在頭文件內。

  大部分調試器對inline函數束手無策,因為在一個不存在的函數內設立斷點並不容易。

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved