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

C++中內聯函數的定義和使用

編輯:關於C++

引入內聯函數的目的是為了解決程序中函數調用的效率問題。

函數是一種更高級的抽象。它的引入使得編程者只關心函數的功能和使用方 法,而不必關心函數功能的具體實現;函數的引入可以減少程序的目標代碼,實 現程序代碼和數據的共享。但是,函數調用也會帶來降低效率的問題,因為調用 函數實際上將程序執行順序轉移到函數所存放在內存中某個地址,將函數的程序 內容執行完後,再返回到轉去執行該函數前的地方。這種轉移操作要求在轉去前 要保護現場並記憶執行的地址,轉回後先要恢復現場,並按原來保存地址繼續執 行。因此,函數調用要有一定的時間和空間方面的開銷,於是將影響其效率。特 別是對於一些函數體代碼不是很大,但又頻繁地被調用的函數來講,解決其效率 問題更為重要。引入內聯函數實際上就是為了解決這一問題。

在程序編譯時,編譯器將程序中出現的內聯函數的調用表達式用內聯函數的 函數體來進行替換。顯然,這種做法不會產生轉去轉回的問題,但是由於在編譯 時將函數休中的代碼被替代到程序中,因此會增加目標程序代碼量,進而增加空 間開銷,而在時間代銷上不象函數調用時那麼大,可見它是以目標代碼的增加為 代價來換取時間的節省。

內聯函數的定義方法

定義內聯函數的方法很簡單,只要在函數定義的頭前加上關鍵字inline即可 。內聯函數的定義方法與一般函數一樣。如:

inline int add_int (int x, int y, int z)

  {

  return x+y+z;

  }

在程序中,調用其函數時,該函數在編譯時被替代,而不是像一般函數那樣 是在運行時被調用。

使用內聯函數應注意的事項

內聯函數具有一般函數的特性,它與一般函數所不同之處公在於函數調用的 處理。一般函數進行調用時,要將程序執行權轉到被調用函數中,然後再返回到 調用它的函數中;而內聯函數在調用時,是將調用表達式用內聯函數體來替換。 在使用內聯函數時,應注意如下幾點:

1.類內定義的函數是內聯函數,類外定義的函數是非內聯函數(短函數可以 定義在類內,長函數可以定義在類外)。

2.可以為類外定義的函數指定 inline 關鍵字,強行為內聯函數。

3.在內聯函數內不允許用循環語句和開關語句。

4.內聯函數的定義必須出現在內聯函數第一次被調用之前。 暫無留言!您可 能會對以下信息感興趣:

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