學習C 2 之類的靜態成員及靜態成員函式

2021-07-09 13:40:24 字數 1064 閱讀 2758

關鍵字 static 可以用於說明乙個類的成員,靜態成員提供了乙個同類物件的共享機制,把乙個類的成員說明為 static 時,這個類無論有多少個物件被建立,這些物件共享這個 static 成員,靜態成員區域性於類,它不是物件成員。

//建立與初始化

classx ;

intx :: s = 0 ;

#include

class counter

int mem; //公有資料成員

static

int smem ;//公有靜態資料成員

} ;int counter :: smem = 1 ; //初始值為1

void main()

cout

<<"c.smem = "

<<"c.mem = "

《無論這個有多少個物件被建立,都能共享這個static成員。在類外初始化,不需要類例項化也可以訪問static成員。

class myclass

;int myclass :: num=1;

void main()

靜態成員函式數冠以關鍵字static。靜態成員函式提供不依賴於類資料結構的共同操作,它沒有this指標。

在類外呼叫靜態成員函式用 「類名 :: 」作限定詞,或通過物件呼叫

class x

; void x :: stafun ( int i , x * ptr )

void g()

靜態成員函式都在**區,類的函式都是共享**共享。

class myclass

;//函式指標的構造

myclass myclass1;

//void (myclass::*p)()=&myclass1:run();//error

void (myclass:: *p)=&myclass::run();//普通成員函式

void (*p)()=&myclass::go();//靜態函式指標與物件無關

C 之類的靜態成員

類的靜態成員 用關鍵字static宣告 為該類的所有物件共享,靜態資料成員具有靜態生存期。必須在類外定義和初始化,用 來指明所屬的類。include using namespace std class point point point p point intgetx intgety void sh...

C 系列之類的靜態成員

靜態成員函式中不能呼叫非靜態成員,非靜態成員函式中可以呼叫靜態成員,因為靜態成員在編譯時已經存在,先於物件而存在,因而無法使用物件的成員函式 靜態成員變數使用前必須先初始化,否則會在linker時出錯 靜態成員的特性 不管這個類建立了多少個物件,而其靜態成員只有乙個拷貝 副本 這個拷貝被所有屬於這個...

C 靜態成員 2 靜態資料成員

目錄 1.靜態成員的構造 2.靜態成員的訪問 3.靜態成員的初始化 include class a class b int main 輸出 b s constructor called 結論 程式只呼叫了b的建構函式,而沒有呼叫a的建構函式。原因很簡單,靜態成員僅僅在類宣告的時候而宣告,但是不會定義...