【C++學(xué)習(xí)筆記(十)】之如何理解類中的靜態(tài)成員變量與靜態(tài)成員函數(shù)

一. 類的靜態(tài)成員

? ? ? ?大家應(yīng)該都知道靜態(tài)變量庵寞,就是在變量前面加上static涨醋,類的靜態(tài)成員也是同樣的道理挪钓,在類的成員函數(shù)與成員變量前面加上static聲明為類的靜態(tài)成員痹愚。和靜態(tài)變量的原理一樣,不管這個(gè)類創(chuàng)建了多少個(gè)對(duì)象,靜態(tài)成員只有一個(gè)拷貝外恕,這個(gè)拷貝是被所有這個(gè)類的對(duì)象共享的晕换。

二. 類的靜態(tài)成員變量

(一)定義

? ? ? ?類的靜態(tài)變量即是在類中,用關(guān)鍵字static聲明成員變量磅摹。無(wú)論建立了多少個(gè)對(duì)象滋迈,都只有一個(gè)靜態(tài)變量的拷貝霎奢。靜態(tài)成員變量,不屬于某一個(gè)類對(duì)象饼灿,而只是屬于這個(gè)類幕侠,對(duì)于所有類對(duì)象時(shí)共享的。

(二)重點(diǎn)記憶

1. 類的靜態(tài)變量的分配空間

? ? ? ?類的靜態(tài)變量赔退,在編譯階段就已經(jīng)分配了空間橙依,即還沒(méi)有創(chuàng)建類對(duì)象時(shí),就已經(jīng)分配空間硕旗。
? ? ? ? 理解:同static變量一樣窗骑,類的靜態(tài)變量也是在編譯階段就分配好了空間。

2. 在為類對(duì)象分配空間中不包括靜態(tài)成員所占空間漆枚。

? ? ? ?理解:因?yàn)殪o態(tài)變量并不屬于某個(gè)類對(duì)象创译,它是共享的,因此獨(dú)立的類對(duì)象分配空間是不包括靜態(tài)成員的空間的墙基。

3. 類的靜態(tài)變量可以通過(guò)類對(duì)象來(lái)訪問(wèn)软族,也可以通過(guò)類名直接訪問(wèn)。

理解:

(1)通過(guò)類對(duì)象訪問(wèn)是正常訪問(wèn)残制。

? ? ? ?如下面代碼所示:(我直接寫(xiě)類和調(diào)用了)

#include<iostream>
using namespace std;

class Person{
public:
    Person(){};

    static int a;
}
int Person::a = 0;
int main()
{
    Person p1;
    p1.a  = 100;
    Person p2;
    p2.a  = 200;
    cout << "a1 = " << p1.a<<endl;
    cout <<"a2 = " << p2.a << endl;
}

? ? ? ?輸出結(jié)果是什么呢立砸?
? ? ? ?當(dāng)然是:
? ? ? ?? ? ? ? a1 = 200;
? ? ? ?? ? ? ? a2 = 200;

? ? ? ?因?yàn)?a 是類的靜態(tài)變量,是共享的初茶,所以更改的都是同一個(gè)值颗祝。

(2)通過(guò)類名直接訪問(wèn)

? ? ? ?如何通過(guò)類名直接訪問(wèn)呢?可以用下面代碼所示調(diào)用:

Person::a;

? ? ? ?因?yàn)閟tatic變量并不屬于任何一個(gè)類對(duì)象恼布,但是它屬于這個(gè)類螺戳,因此可以直接用類名調(diào)用。

4. 靜態(tài)成員變量必須在類中聲明折汞,在類外定義倔幼。

? ? ? ?靜態(tài)變量在類中聲明static,為什么在類外定義呢?類中能否定義爽待?答案是不行的损同。來(lái)看看代碼。

#include<iostream>
using namespace std;

class Person{
public:
    Person(int pa)
    {
        a  = pa;
    };
    static int a;
}

int main()
{
    cout <<Person::a << endl;   //錯(cuò)誤堕伪,無(wú)法訪問(wèn)到a
}

? ? ? ?代碼中揖庄,我們用 Person::a 的方式直接訪問(wèn)類的靜態(tài)變量,是不會(huì)調(diào)用構(gòu)造函數(shù)的欠雌,因此類中的 a 是沒(méi)有定義的蹄梢。所以最好是在類外定義類的靜態(tài)變量。

三. 類的靜態(tài)成員函數(shù)

(一). 定義

? ? ? ?在類定義中,用static聲明的成員函數(shù)為靜態(tài)成員函數(shù)禁炒。使用方式與靜態(tài)成員變量一樣而咆,都是通過(guò)類對(duì)象訪問(wèn)和類名直接訪問(wèn)。

(二)意義

? ? ? ?類的靜態(tài)成員函數(shù)的意義在于管理靜態(tài)成員變量幕袱,完成對(duì)靜態(tài)成員變量的封裝暴备。

(三). 重點(diǎn)記憶

1. 靜態(tài)成員函數(shù)只能訪問(wèn)靜態(tài)成員變量,不能訪問(wèn)普通成員變量们豌。

? ? ? ?理解:static成員函數(shù)是是共享的涯捻,存儲(chǔ)在一塊空間中,而普通的成員變量是屬于每個(gè)類對(duì)象的望迎,每個(gè)類對(duì)象存儲(chǔ)在獨(dú)立的空間中障癌,若在靜態(tài)成員函數(shù)中直接訪問(wèn)普通成員變量,那么它將無(wú)法區(qū)分普通的成員變量屬于哪個(gè)類對(duì)象辩尊。

2.普通成員函數(shù)可訪問(wèn)靜態(tài)成員變量涛浙、也可以訪問(wèn)普通成員變量。

? ? ? ?理解:靜態(tài)成員變量只有一份存儲(chǔ)空間摄欲,普通成員函數(shù)可以直接識(shí)別轿亮,不會(huì)混淆。

? ? ? ?以上就是類中的靜態(tài)成員變量以及靜態(tài)成員函數(shù)的理解胸墙,原創(chuàng)不易我注,多多鼓勵(lì)!3儆纭仓手!

? ? ? ? 關(guān)注公號(hào)【開(kāi)發(fā)小鴿】,獲取海量計(jì)算機(jī)視覺(jué)與深度學(xué)習(xí)資源玻淑,實(shí)戰(zhàn)項(xiàng)目源碼,最新論文下載呀伙,大廠面試經(jīng)驗(yàn)2孤摹!剿另!?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末箫锤,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子雨女,更是在濱河造成了極大的恐慌谚攒,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,110評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件氛堕,死亡現(xiàn)場(chǎng)離奇詭異馏臭,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)讼稚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門括儒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)绕沈,“玉大人,你說(shuō)我怎么就攤上這事帮寻≌Ш” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,474評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵固逗,是天一觀的道長(zhǎng)浅蚪。 經(jīng)常有香客問(wèn)我,道長(zhǎng)烫罩,這世上最難降的妖魔是什么惜傲? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,881評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮嗡髓,結(jié)果婚禮上操漠,老公的妹妹穿的比我還像新娘。我一直安慰自己饿这,他們只是感情好浊伙,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,902評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著长捧,像睡著了一般嚣鄙。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上串结,一...
    開(kāi)封第一講書(shū)人閱讀 51,698評(píng)論 1 305
  • 那天哑子,我揣著相機(jī)與錄音,去河邊找鬼肌割。 笑死卧蜓,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的把敞。 我是一名探鬼主播弥奸,決...
    沈念sama閱讀 40,418評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼奋早!你這毒婦竟也來(lái)了盛霎?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,332評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤耽装,失蹤者是張志新(化名)和其女友劉穎愤炸,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體掉奄,經(jīng)...
    沈念sama閱讀 45,796評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡规个,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,968評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片绰姻。...
    茶點(diǎn)故事閱讀 40,110評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡枉侧,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出狂芋,到底是詐尸還是另有隱情榨馁,我是刑警寧澤,帶...
    沈念sama閱讀 35,792評(píng)論 5 346
  • 正文 年R本政府宣布帜矾,位于F島的核電站翼虫,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏屡萤。R本人自食惡果不足惜珍剑,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,455評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望死陆。 院中可真熱鬧招拙,春花似錦、人聲如沸措译。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,003評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)领虹。三九已至规哪,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間塌衰,已是汗流浹背诉稍。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,130評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留最疆,地道東北人杯巨。 一個(gè)月前我還...
    沈念sama閱讀 48,348評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像努酸,于是被迫代替她去往敵國(guó)和親舔箭。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,047評(píng)論 2 355