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 行甚至更少時才將其定義為內聯函...