c 物件導向 之 內聯函式 this 靜態成員

2022-02-08 01:38:31 字數 1991 閱讀 8867

如果乙個函式是內聯的,那麼在編譯時,編譯器會把該函式的**副本放置在每個呼叫該函式的地方。用inline指定,內聯函式通常短小精悍沒有while和for迴圈,能夠幫助提公升程式執行的速度

#include using namespace std;

inline

int max(int x, int

y)//

程式的主函式

intmain( )

#include using

namespace

std;

class

box

double

volume()

intcompare(box box)

private

:

double length; //

length of a box

double breadth; //

breadth of a box

double height; //

height of a box};

int main(void

)

else

return0;

}

#include using

namespace

std;

class

box

double

volume()

private

:

double length; //

length of a box

double breadth; //

breadth of a box

double height; //

height of a box

};int main(void

)

上面的例子,返回結果:

constructor called.

constructor called.

平時呼叫類5.94

volume of box1: 5.94

daqing ptrbox:0x7ffe09478430

address value0x7ffe094784182

volume of box2: 102

static靜態函式標誌可以這樣來理解:

函式內部定義的變數,在程式執行到它的定義處時,編譯器為它在棧上分配空間,然後,函式在棧上分配的空間在此函式執行結束時會釋放掉,這樣就產生了乙個問題: 如果想將函式中此變數的值儲存至下一次呼叫時,如何實現? 最容易想到的方法是定義乙個全域性的變數,但定義為乙個全域性變數有許多缺點,最明顯的缺點是破壞了此變數的訪問範圍(使得在此函式中定義的變數,不僅僅受此函式控制)。所以需要static這樣屬於區域性但是又能夠全域性訪問的變數。

#include using

namespace

std;

class

box

double

volume()

private

:

double length; //

長度double breadth; //

寬度double height; //

高度}; //

初始化類 box 的靜態成員

int box::objectcount = 0; //

訪問或者修改靜態成員可以不用例項,直接上就行,因為靜態類是為類服務的(不支援this),靜態屬性只能初始化一次

int main(void

)

以上例項返回結果:

constructorcalled.constructorcalled.totalobjects:2

靜態類的方法也是一樣的,不用例項化直接呼叫就是了,和php差不多

c 物件導向之 內聯函式

c 中支援內聯函式,其目的是為了提高函式的執行效率,用關鍵字 inline 放在函式定義 注意是定義而非宣告,下文繼續講到 的前面即可將函式指定為內聯函式,內聯函式通常就是將它在程式中的每個呼叫點上 內聯地 展開,假設我們將 max 定義為內聯函式 inline int max int a,int ...

C 物件導向 內聯函式

1.內聯函式與常規函式的區別不在於編寫方式,而在於被呼叫的執行機制不同。2.內聯函式中,編譯器使用函式 替換 複製 函式呼叫。可以模擬但不同於巨集替換 3.內聯函式優點 執行效率高 4.如何使用內聯特性?在函式宣告或定義前使用關鍵字inline 5.內聯函式只會出現在編譯器中,經編譯器最終形成的可執...

C 之內聯函式

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