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