目錄
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...