您好,登錄后才能下訂單哦!
本文小編為大家詳細(xì)介紹“C++類的靜態(tài)成員變量實(shí)例分析”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“C++類的靜態(tài)成員變量實(shí)例分析”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學(xué)習(xí)新知識(shí)吧。
通過對(duì)象名能夠訪問 public 成員變量
每個(gè)對(duì)象的成員變量都是專屬的
成員變量不能在對(duì)象之間共享
統(tǒng)計(jì)在程序運(yùn)行期間某個(gè)類的對(duì)象數(shù)目
保證程序的安全性(不能使用全局變量)
隨時(shí)可以獲取當(dāng)前對(duì)象的數(shù)目
下面來看示例:
#include <stdio.h> int gCount = 0; class Test { private: int mCount; public: Test() : mCount(0) { gCount++; } ~Test() { --gCount; } int getCount() { return gCount; } }; Test gTest; int main() { Test t1; Test t2; printf("count = %d\n", gTest.getCount()); printf("count = %d\n", t1.getCount()); printf("count = %d\n", t2.getCount()); return 0; }
輸出結(jié)果如下:
雖然這段代碼可以獲得當(dāng)前定義對(duì)象的數(shù)量,但是使用了全局變量,不能保證程序的安全性,那么有什么好的辦法呢?且看下面。
在 C++ 中可以定義靜態(tài)成員變量
靜態(tài)成員變量屬于整個(gè)類所有
靜態(tài)成員變量的生命期不依賴于任何對(duì)象
可以通過類名直接訪問公有靜態(tài)成員變量
所有對(duì)象共享類的靜態(tài)成員變量
可以通過對(duì)象名訪問公有靜態(tài)成員變量
靜態(tài)成員變量的特性
在定義時(shí)直接通過 static 關(guān)鍵字修飾
靜態(tài)成員變量需要在類外單獨(dú)分配空間
靜態(tài)成員變量在程序內(nèi)部位于全局?jǐn)?shù)據(jù)區(qū)
語法規(guī)則:
Type ClassName:VarName = value;
下面來看一下靜態(tài)成員變量的使用:
#include <stdio.h> class Test { private: static int cCount; public: Test() { cCount++; } ~Test() { --cCount; } int getCount() { return cCount; } }; int Test::cCount = 0; Test gTest; int main() { Test t1; Test t2; printf("count = %d\n", gTest.getCount()); printf("count = %d\n", t1.getCount()); printf("count = %d\n", t2.getCount()); Test* pt = new Test(); printf("count = %d\n", pt->getCount()); delete pt; printf("count = %d\n", gTest.getCount()); return 0; }
輸出結(jié)果如下:
Test* pt = new Test();
動(dòng)態(tài)在堆空間生成了一個(gè) test 對(duì)象,所以會(huì)觸發(fā)構(gòu)造函數(shù)的調(diào)用,所以 count 變成了 4,delete pt; 后 count 就變成 3 了。
讀到這里,這篇“C++類的靜態(tài)成員變量實(shí)例分析”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識(shí)點(diǎn)還需要大家自己動(dòng)手實(shí)踐使用過才能領(lǐng)會(huì),如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。