C 之內聯函式

2021-10-04 21:17:51 字數 1603 閱讀 1522

c++ 內聯函式是通常與類一起使用。如果乙個函式是內聯的,那麼在編譯時,編譯器會把該函式的**副本放置在每個呼叫該函式的地方。

對內聯函式進行任何修改,都需要重新編譯函式的所有客戶端,因為編譯器需要重新更換一次所有的**,否則將會繼續使用舊的函式。

如果想把乙個函式定義為內聯函式,則需要在函式名前面放置關鍵字 inline,在呼叫函式之前需要對函式進行定義。如果已定義的函式多於一行,編譯器會忽略 inline 限定符。

在類定義中的定義的函式都是內聯函式,即使沒有使用 inline 說明符。

在 c++ 中,每乙個物件都能通過 this 指標來訪問自己的位址。this 指標是所有成員函式的隱含引數。因此,在成員函式內部,它可以用來指向呼叫物件。

友元函式沒有 this 指標,因為友元不是類的成員。只有成員函式才有 this 指標

class

boxint

compare

(box box)

private

:double length;

// length of a box

double breadth;

// breadth of a box

double height;

// height of a box

};

乙個指向 c++ **類的指標與指向結構的指標類似,**訪問指向類的指標的成員,需要使用成員訪問運算子 ->,就像訪問指向結構的指標一樣。與所有的指標一樣,您必須在使用指標之前,對指標進行初始化。

// 儲存第乙個物件的位址

ptrbox =

&box1;

// 現在嘗試使用成員訪問運算子來訪問成員

cout <<

"volume of box1: "

<< ptrbox-

>

volume()

<< endl;

我們可以使用 static 關鍵字來把類成員定義為靜態的。當我們宣告類的成員為靜態時,這意味著無論建立多少個類的物件,靜態成員都只有乙個副本

靜態成員在類的所有物件中是共享的。如果不存在其他的初始化語句,在建立第乙個物件時,所有的靜態資料都會被初始化為零。我們不能把靜態成員的初始化放置在類的定義中,但是可以在類的外部通過使用範圍解析運算子 :: 來重新宣告靜態變數從而對它進行初始化,如下面的例項所示。

class

boxdouble

volume()

private

:double length;

// 長度

double breadth;

// 寬度

double height;

// 高度};

// 初始化類 box 的靜態成員

int box::objectcount =0;

intmain

(void

)

C 之內聯函式

一 目的 提高程式執行速度所做的一項改進。二 內聯函式與常規函式的區別 編譯過程的最終產品是程式 由一組機器語言指令組成。執行程式時作業系統將這些指令載入到計算機記憶體中,因此每條指令都有特有的記憶體位址。計算機隨後逐步執行這些命令。執行到函式呼叫指令時,程式將在函式呼叫後立即儲存該指令的記憶體位址...

C 之內聯函式

內聯函式是一種特殊的函式,具有普通函式的特徵 引數檢查,返回型別等 內聯函式是對編譯器的一種請求,因此編譯器可能拒絕這種請求 內聯函式由 編譯器處理,直接將編譯後的函式體插入呼叫的地方 巨集 片段 由預處理器處理,進行簡單的文字替換,沒有任何編譯過程 注 內聯函式宣告時inline關鍵字必須和函式定...

c 之內聯函式

若有不對,歡迎道友予以指正,提前謝過。內聯函式 定義時需要關鍵字inline。實際上是和巨集定義一般,在呼叫函式的地方,用函式體進行替換。inline需要在函式定義的時候加入才有效,在宣告的時候不需要 而類宣告中的成員函式自動成為內聯函式。tip 只有當函式只有 10 行甚至更少時才將其定義為內聯函...