不知不覺,又到周末了;上次在交流群里,答應給大家免費送開發板,一開始認為板子夠送,但是昨天整理了一下,然后送了大概十幾個網友就不夠送了,還有十幾個網友沒得到板子,這里說聲實在抱歉,下次有機會搞活動再送給大家好玩的板子:
上圖的板子有最近買的,也有以前買的(stm32、esp8266、51、eps32、小熊派、合宙的cat1、樹莓派3b+);說實話,這些板子買來,一直放在那里吃灰,后期自己的方向也不玩硬件開發板啥的;所以上面的板子都送給了公眾號讀者在校生,讓這些板子發揮它們最大的價值,板子也會在最近慢慢一一送出去;贈人與玫瑰,手有余香!
好了回歸主題,今天繼續分享c++的文章,學習還是不能落下,flag未完成,任務艱巨,好好學習。
一、靜態成員變量:
平時我們在寫類的時候,類中的成員變量,我們一般是通過對象名來訪問public成員變量的,一般private(私有)的成員變量,對象是不能直接訪問的;同時我們要明白每個對象的成員變量都是專屬的,而且成員變量是不能在對象之間共享的,這就是專屬性。下面我們來做一個小的程序需求來慢慢引出靜態成員變量:
統計在程序運行期間某個類的對象數目
要保證該程序的安全性(不能使用全局變量)
隨時可以獲取當前對象的數目
代碼版本一:
#include<stdio.h>classTest{private:intmCount;public:Test():mCount(0){mCount++;}~Test(){--mCount;}intgetCount(){returnmCount;}};TestgTest;intmain(){Testt1;Testt2;printf("mCount=%dn",gTest.getCount());printf("mCount=%dn",t1.getCount());printf("mCount=%dn",t2.getCount());return0;}
運行結果:
root@txp-virtual-machine:/home/txp#./a.outmCount=1mCount=1mCount=1
從運行結果來我們可以看出來,對象獨立性(專屬性);而且結果沒有達到我們的預期要求,于是乎,為了解決這個問題,我們就要排靜態成員變量出場了。
1、c++中可以定義靜態成員變量:
靜態成員變量屬于整個類所有
靜態成員變量的生命期不依賴于任何對象(上面的程序,每個對象的成員變量是獨立的,所以打印出的mCount的值分別為1)
可以通過類名直接訪問公有靜態成員變量
所有對象共享類的靜態成員變量
可以通過對象名 訪問公有靜態成員變量
2、靜態成員變量的特性:
在定義時直接通過static關鍵字修飾
靜態成員變量需要在類外單獨分配空間
靜態成員變量在程序內部位于全局數據區
3、語法規則:
TypeClassName::VarName=value;注意在類的外部進行初始化
代碼版本二:
#include<stdio.h>classTest{private:staticintmCount;public:Test()//不要使用初始化列表進行初始化{mCount++;}~Test(){--mCount;}intgetCount(){returnmCount;}};intTest::mCount=0;TestgTest;intmain(){Testt1;Testt2;printf("mCount=%dn",gTest.getCount());printf("mCount=%dn",t1.getCount());printf("mCount=%dn",t2.getCount());return0;}
運行結果:
root@txp-virtual-machine:/home/txp#./a.outmCount=3mCount=3mCount=3
-
函數
+關注
關注
3文章
4346瀏覽量
62978 -
C++
+關注
關注
22文章
2114瀏覽量
73859
發布評論請先 登錄
相關推薦
評論