inline內聯函式

2021-08-31 04:48:02 字數 881 閱讀 5401

c++ 內聯函式(inline)

概念:內聯函式是為了解決c++預處理器巨集存在的問題所提出一種解決方案,用來提高函式使用效率。

目的:在程式編譯時,編譯器會將程式中出現的內聯函式的呼叫表示式用內聯函式的函式體來進行替換。由於在編譯時將內聯函式體中的**替代到程式中,因此會增加目標程式**量,進而增加空間開銷,而在時間開銷上不象函式呼叫時那麼大,所以它是以目標**的增加為代價來換取時間的節省。即inline函式是為了提高執行時間效率,但卻增加了空間開銷。

定義:(1) 內聯函式使用inline關鍵字定義。關鍵字inline 必須與函式定義體放在一起才能使函式成為內聯,僅將inline 放在函式宣告前面不起任何作用。

inline void function(int x); //僅僅是申明函式,沒有任何效果

inline void function(int x) //正確

(2) 定義在類宣告之中的成員函式將自動地成為內聯函式,不需要inline關鍵字。

class point 

}

inline函式對編譯器而言必須是可見的,以便它能夠在呼叫點內展開該函式。

內聯能提高函式的執行效率,但是不是所有的函式都能定義為內聯函式。

因為內聯是以**複製為代價,僅僅省去了函式呼叫的開銷,從而提高函式的執行效率。如果執行函式體內**的時間,相比於函式呼叫的開銷較大,那麼效率的收穫會很少。另一方面,每一處內聯函式的呼叫都要複製**,將使程式的總**量增大,消耗更多的記憶體空間。以下情況不宜使用內聯:

(1) 如果函式體內的**比較長,使用內聯將導致記憶體消耗代價較高。

(2) 如果函式體內出現迴圈,那麼執行函式體內**的時間要比函式呼叫的開銷大。

inline 內聯函式

一 inline關鍵字用來定義乙個類的內聯函式,引入它的主要原因是用它替代c中表示式形式的巨集定義。表示式形式的巨集定義一例 define expressionname var1,var2 var1 var2 var1 var2 為什麼要取代這種形式呢,且聽我道來 1 首先談一下在c中使用這種形式巨...

inline內聯函式

技術類筆試題50 都會問巨集與inline的區別,自己去找找看?1 巨集替換發生在預編譯 2 巨集函式 如果可以這麼叫的話 替換時不會檢查引數,inline函式會檢查 3 巨集一定會發生替換,inline貌似不是強制的,編譯器想不替換也沒關係 4 巨集替換時存在著一些不可避免的陷阱 參見c trap...

inline內聯函式

一 內聯函式 內聯函式是指用inline關鍵字修飾的函式 它與普通函式所不同之處只在於函式呼叫的處理。普通 函式進行呼叫時,要將程式執行權轉到被呼叫函式中,然後再返回到呼叫它的函式中 內聯函式不是在呼叫時發生執行權轉移,而是在編譯時將 函式 體 嵌入在每乙個呼叫處。編譯時類似巨集替換,使用 函式體替...