靜態成員的提出是為了解決資料共享的問題。
一、靜態資料成員
靜態資料成員的使用例子:
#include using namespace std; class cobj static int getobjs() private: static int mobjs; //宣告靜態資料成員 }; int cobj::mobjs = 0; //靜態資料成員的初始化 int main()
執行結果:
cobj類總共建立了10物件
二、靜態成員函式-->(沒有this指標)
靜態成員函式和靜態資料成員一樣,它們都屬於類的靜態成員,都不是物件成員。因此對靜態成員的引用不需要用物件名,不過用物件名來引用也是可以的。
注:在靜態成員函式的實現中,不能直接引用類中的非靜態成員,可以引用類中說明的靜態成員。但靜態成員函式中可以間接的引用非靜態成員,可以通過物件來引用。
來個例子,說明在 靜態成員函式中,可以直接引用靜態資料成員,但不能直接引用非靜態資料成員,非靜態資料成員必須通過物件來引用。
#include using namespace std; class cobj static void showdata(cobj obj) private: static int mobjs_static; //宣告靜態資料成員 int mobjs_nonstatic; }; int cobj::mobjs_static = 0; //靜態資料成員的初始化 int main()
執行結果:
直接引用: cobj類總共建立了3物件
間接引用: cobj類總共建立了3物件
直接引用: cobj類總共建立了3物件
間接引用: cobj類總共建立了3物件
三、const的static成員
上面已經說了,類的static資料成員,不能在類的宣告中初始化,只能在類外進行初始化。但這裡存在一種特殊情況,如果該靜態資料成員是乙個常量表示式,那麼它就能夠在類中進行初始化。
初始化的格式是:static const 《資料型別》 《變數名》 = 《值》;
例子: #include using namespace std; class cobj ; int main()
執行結果:
state_mount = 0
state_umount = 1
state_mount = 0
state_umount = 1
C 學習 靜態成員 6
靜態成員的提出是為了解決資料共享的問題。一 靜態資料成員 靜態資料成員的使用例子 include using namespace std class cobj static int getobjs private static int mobjs 宣告靜態資料成員 int cobj mobjs 0 ...
靜態成員(6)
靜態成員就是在成員變數和成員函式之前加上關鍵字static,稱為靜態成員 靜態成員分為 1.靜態成員變數 1 所有的物件共享同乙份資料 決定了什麼時候用static關鍵字 2 在編譯階段分配記憶體 3 類內宣告,類外初始化 必須要做 2.靜態成員函式 1 所有的物件共享同乙個函式,因為它不屬於某個物...
c 學習靜態資料成員與靜態成員函式
此次主要想要學習靜態資料成員與靜態成員函式 靜態是以static進行宣告 其是屬於類而不屬於物件 即乙個類只會對靜態分配乙個儲存空間,無論建立n個物件,靜態成員的儲存只會有乙個,而其他非靜態成員會有n個 靜態成員必須在類外進行初始化 例如我這次忘記定義 int student total 0 系統一...