C++ 內聯函數

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

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

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

內聯函數的定義方法

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

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

{

return x+y+z;

}

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

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

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

1.在內聯函數內不答應用循環語句和開關語句。

2.內聯函數的定義必須出現在內聯函數第一次被調用之前。

3.本欄目講到的類結構中所有在類說明內部定義的函數是內聯函數。

C++如何處理內聯虛函數
C++如何處理內聯虛函數   當一個函數是內聯和虛函數時,會發生代碼替換或使用虛表調用嗎? 爲了弄清楚內聯和虛函數,讓我們將它們分開來考慮。通常,一個內聯函數是被展開的。 ...查看完整版>>C++如何處理內聯虛函數
 
C++如何處理內聯虛函數
當一個函數是內聯和虛函數時,會發生代碼替換或使用虛表調用嗎? 爲了弄清楚內聯和虛函數,讓我們將它們分開來考慮。通常,一個內聯函數是被展開的。 class CFoo { private: int ...查看完整版>>C++如何處理內聯虛函數
 
新手入門:關于C++中的內聯函數(inline)
  在c++中,爲了解決一些頻繁調用的小函數大量消耗棧空間或者是叫棧內存的問題,非凡的引入了inline修飾符,表示爲內聯函數。 ...查看完整版>>新手入門:關于C++中的內聯函數(inline)
 
CUJ:標准C++編程:虛函數與內聯
標准C++編程:虛函數與內聯Josée Lajoie and Stanley Lippman----------------------------------------------------------------------------------[This is the last installment of a column that was being pub...查看完整版>>CUJ:標准C++編程:虛函數與內聯
 
C++ FAQ Lite[9]--內聯函數(更新)
內聯函數(Part of )簡體中文版翻譯:)FAQs in section : [9.1] 內聯函數是什麽?內聯函數是代碼被插入到調用者代碼串處的函數。如同 #define 宏,內聯函數通過避免被調用的開銷來提高執行效率,尤其是它能夠...查看完整版>>C++ FAQ Lite[9]--內聯函數(更新)
 
C++內聯函數(Inline)介紹
介紹內聯函數之前,有必要介紹一下預處理宏。內聯函數的功能和預處理宏的功能相似 。相信大家都用過預處理宏,我們會經常定義一些宏,如 #define TABLE_COMP(x) ((x)>0?(x):0) 就定義了一個宏。   爲什麽要...查看完整版>>C++內聯函數(Inline)介紹
 
在C++語言中,關于內聯函數(inline)的入門教程!
在c++中,爲了解決一些頻繁調用的小涵數大量消耗棧空間或者是叫棧內存的問題,非凡的引入了inline修飾符,表示爲內聯涵數。 ...查看完整版>>在C++語言中,關于內聯函數(inline)的入門教程!
 
理解內聯函數inline在C++中的用法
  在C++中,爲了解決一些頻繁調用的小涵數大量消耗棧空間或者是叫棧內存的問題,非凡的引入了inline修飾符,表示爲內聯涵數。   可能說到這裏,很多人還不明白什麽是棧空間,其實棧空間就是指放置程序的局部數據...查看完整版>>理解內聯函數inline在C++中的用法
 
關于C++中的內聯函數(inline)
在c++中,爲了解決一些頻繁調用的小函數大量消耗棧空間或者是叫棧內存的問題,特別的引入了inline修飾符,表示爲內聯函數。   可能說到這裏,很多人還不明白什麽是棧空間,其實棧空間就是指放置程序的局部數據也就...查看完整版>>關于C++中的內聯函數(inline)
 
 
回到王朝網路移動版首頁