25 類的靜態成員變數

2021-10-01 02:45:19 字數 1799 閱讀 5196

目錄

1.成員變數的回顧

2.新需求

程式設計實驗:解決方案嘗試

測試一:普通成員變數

測試二:全域性變數

3.靜態成員變數

3.1在c++中可以定義靜態成員變數

3.2靜態成員變數的特性

程式設計實驗:靜態成員變數的使用

4.小結

#include class test

~test()

int getcount()

};test gtest;

int main(int argc, char **ar**)

book@book-desktop:~/ditai$ ./a.out 

count = 1

count = 1

count = 1

未達到期望,分析:定義的是乙個成員變數,每個物件有他自己的一套,初始化都為1。普通成員變數不能達到。

可以達到要求,但是不安全

語法規則:

type classname::varname= value;     // 這裡前面不用加 static

#include class test

~test()

int getcount()

};//如果沒有定義會報錯,詳見一,聯結器找不到mcount的儲存空間

//原因是:靜態成員變數不屬於某個物件了而是隸屬於類

int test :: mcount = 0;

test gtest;

int main(int argc, char **ar**)

列印:

book@book-desktop:~/ditai$ ./a.out

count = 3

count = 3

count = 3

count = 4

count = 3

報錯一:

book@book-desktop:~/ditai$ g++ test.cpp

/tmp/ccmuwdu0.o: in function `test::test()':

test.cpp:(.text._zn4testc1ev[test::test()]+0x4): undefined reference to `test::mcount'

test.cpp:(.text._zn4testc1ev[test::test()]+0xc): undefined reference to `test::mcount'

/tmp/ccmuwdu0.o: in function `test::~test()':

test.cpp:(.text._zn4testd1ev[test::~test()]+0x4): undefined reference to `test::mcount'

test.cpp:(.text._zn4testd1ev[test::~test()]+0xc): undefined reference to `test::mcount'

/tmp/ccmuwdu0.o: in function `test::getcount()':

test.cpp:(.text._zn4test8getcountev[test::getcount()]+0x4): undefined reference to `test::mcount'

collect2: ld returned 1 exit status

第25課 類的靜態成員變數

本文內容取自於對狄泰學院 唐佐林老師 c 深度解析 課程的學習總結 在 c 中可以定義 靜態成員變數 靜態成員變數 屬於整個類所有 靜態成員變數的生命期不依賴於任何物件 可以 通過類名直接訪問 公有靜態成員變數 所有物件共享類的靜態成員變數 可以 通過物件名訪問 公有靜態成員變數 靜態成員變數的特性...

第25課 類的靜態成員變數

1 通過物件名能夠訪問public成員變數 2 每個物件的成員變數都是專屬的,成員變數不能在物件之間共享 這麼看,如果多個物件想操作同乙個資料,從目前來看只能使用全域性變數 每個物件都可以操作全域性作用域的全域性變數 但是這樣存在安全隱患,在現代軟體開發中不推薦這種方式。那麼,有沒有其它更好的方式呢...

25 類的靜態成員函式

1 上個程式未達到需求 隨時可以獲取當前物件的數目 failure 錯誤原因 上乙個程式如果我們沒有定義物件,那怎麼輸出物件的數目呢?我想到的解決方案是把靜態區域性變數變成公有。這樣可以不用通過物件,直接通過類名就可以直接訪問靜態區域性變數。分析 程式的確實達到了我們想要的結果,但是test sco...