2020 4 28 靜態成員

2021-10-05 13:53:28 字數 1132 閱讀 2995

2020-4-28_c++作業_靜態成員

靜態資料成員:

​ 是類中通過關鍵字static宣告的成員資料,不屬於類的任何乙個物件而為該類的所有物件共享。

特點:

類的靜態資料成員應該在**中被顯式地初始化,且一般要在類外在全域性作用域中進行(除非它是常量),用::指明所屬的類。

class a
具有靜態生存期,在定義時就分配記憶體空間,沒用任何物件時都可以訪問。

外部訪問類的靜態資料成員能直接通過類名和::來訪問,也可以使用類的物件、引用或指標來訪問。

靜態函式成員:

​ 是在類中加上static關鍵字宣告成員函式。

特點:

可以在類中定義。

不屬於單個物件而被所有該類的物件所同享,由此:

靜態成員函式不能呼叫非靜態成員函式和非靜態資料成員,但非靜態成員函式可以呼叫靜態成員。

靜態成員函式沒有this指標,所以靜態成員函式不能使用修飾符(函式後面的const關鍵字)。

static void test() const //錯誤
靜態成員函式的位址可用普通函式指標儲存,而普通成員函式位址需要用類成員函式指標來儲存。

class a

cat(cat & ca)

~cat()

static void getnumofcats()

};int cat::numofcats = 0;

int main()

cat::getnumofcats();

cat* pc = new cat;

cat::getnumofcats();

delete pc;

cat::getnumofcats();

cin.get();

return 0;

}

執行結果:

靜態成員 靜態成員函式

reference to non static member function must be called sort numbers.begin numbers.end cmp 做演算法題的時候遇到的乙個問題,和成員函式相關,這裡記錄一下備忘。首先上 class solution string p...

靜態成員和非靜態成員

類中的成員要麼是靜態的要麼是非靜態的。一般來說,靜態成員都歸屬於類所有,使用 static 關鍵字來宣告,不能在類的例項中訪問靜態成員 非靜態成員屬於類的例項 物件所有,不能按照類訪問靜態成員來訪問。下面用乙個例項來幫助理解 using system using system.collections...

靜態成員與非靜態成員

靜態成員屬於類,而非靜態成員屬於類的例項。兩者的主要區別是static關鍵字,靜態成員使用static關鍵字宣告,放在型別之前,而非靜態成員則沒有。每次類被例項化之後,類中的非靜態成員就會隨著例項複製乙份過去,而靜態成員則仍然保留在類中。靜態成員和非靜態成員是不能互相呼叫。也就是說,靜態方法只能呼叫...