C 學習 靜態成員 6

2021-08-26 17:06:59 字數 1437 閱讀 8472

靜態成員的提出是為了解決資料共享的問題。

一、靜態資料成員

靜態資料成員的使用例子:

#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 系統一...