內聯函式和成員函式區別

2021-07-11 05:05:18 字數 589 閱讀 6749

內聯函式類似於c裡邊的巨集,只是巨集經常有一些不安全因素,比如 巨集定義 add() 是 a+b,呼叫的時候巨集定義直接展開,不做任何的判斷,如果呼叫res = add()*c; 得到的**就是res = a+b*c;不是想要的結果。 

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

內聯函式在編譯時,會將此內聯函式**直接編譯到呼叫函式之處。減少了一次函式呼叫時的跳轉、資料壓棧等操作。所以相比呼叫行數,內聯函式的執行效率要相對高點。不過也正因為如此,所以最終生成的程式檔案要稍微大點。

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

2.有兩種內聯函式的宣告方法,一種是在函式前使用inline關鍵字;另一種是在類的內部定義函式的**,這樣的函式將自動轉換為內聯函式,而且沒必要將inline放在函式前面。

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

內聯函式和成員函式區別

內聯函式類似於c裡邊的巨集,只是巨集經常有一些不安全因素,比如 巨集定義 add 是 a b,呼叫的時候巨集定義直接展開,不做任何的判斷,如果呼叫res add c 得到的 就是res a b c 不是想要的結果。內聯函式可以理解成乙個安全的巨集定義,他就是乙個真正的函式,只是不用壓棧出棧,速度快,...

成員函式與內聯函式

11.關於成員函式特徵的下列描述中,是錯誤的.成員函式一定是內聯函式 b.成員函式可以過載 c.成員函式可以設定預設引數值 d.成員函式可以是靜態的 a 解析 因為成員函式可以在類體內定義,也可以在類體外定義,所以成員函式不一定都是內聯函式 成員函式可以過載,可以設定引數的預設值,成員函式可以是靜態...

內聯成員函式

把成員函式的 放如類定義中。這種方式定義的函式就叫內聯成員函式。程式使用內聯成員函式的方式可以與類外部定義的成員函式的使用方式完全相同。但是,內聯函式和外聯函式之間還是有一點區別的 定義乙個內聯函式時,編譯器會把內聯函式的 替換到程式中。使用非內聯函式時,就不會這樣做。但是我們不能讓所有的函式都內聯...