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