- 經過對象名可以訪問 public 成員
- 每一個對象的成員變量都是專屬的
- 成員變量不能在對象之間共享
- 統計在程序運行期間某個類的對象數目
- 保證程序的安全性(不能使用全局變量)
- 隨時能夠獲取當前對象的數目
#include <stdio.h> class Test { private: int mCount; public: Test() : mCount(0) { mCount ++; } ~Test() { -- mCount; } int getCount() { return mCount; } }; 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; }
輸出: count = 1 count = 1 count = 1 分析: 每一個對象的都有本身獨立的成員變量,所以不具有全局統計的能力
在 C++ 中能夠定義靜態成員變量編程
- 靜態成員變量屬於整個類全部
- 靜態成員變量的生命期不依賴於任何對象(與程序的運行期相同)
- 能夠經過類名直接訪問公有靜態成員變量
- 全部對象共享類的靜態成員變量
- 能夠經過對象名訪問公有靜態成員變量
靜態成員變量的特性安全
- 在定義時接經過 static 關鍵字修飾
- 靜態成員變量須要在類外單獨分配空間
- 靜態成員變量在程序內部位於全局數據區
語法規則:code
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", pt->getCount()); return 0; }
- 類中能夠經過 static 關鍵字定義靜態成員變量
- 靜態成員變量隸屬於類全部
- 每個對象均可以訪問靜態成員變量
- 靜態成員變量在全局數據區分配空間
- 靜態成員變量的生命期爲程序運行期
以上內容參考狄泰軟件學院系列課程,請你們保護原創!對象