25_類的靜態(tài)成員變量

0. 成員變量的回顧

  • 通過對(duì)象名能夠訪問public成員變量
  • 每個(gè)對(duì)象的成員變量都是專屬的
  • 成員變量不能在對(duì)象之間共享

1. 新的需求

  • 統(tǒng)計(jì)在程序運(yùn)行期間某個(gè)類的對(duì)象數(shù)目
  • 保證程序的安全性(不能使用全局變量)
  • 隨時(shí)可以獲取當(dāng)前對(duì)象的數(shù)目

編程說明:解決方案

#include <stdio.h>

class Test
{
private:
    static int cCount;  // 定義靜態(tài)成員變量
public:
    Test() 
    {
        cCount++;
    }
    ~Test()
    {
        --cCount;
    }
    int getCount()
    {
        return cCount;
    }
};

int Test::cCount  = 0;  // 使用靜態(tài)成員變量

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é)果:

count = 3
count = 3
count = 3
count = 4
count = 3

2. 靜態(tài)成員變量

  • 靜態(tài)成員變量屬于整個(gè)類所有
  • 靜態(tài)成員變量的生命期不依賴與任何對(duì)象,其生命周期如全局變量,為整個(gè)程序的運(yùn)行周期
  • 可以通過類名直接訪問公有靜態(tài)成員變量
  • 所有對(duì)象共享類的靜態(tài)成員變量
  • 可以通過對(duì)象名訪問公有靜態(tài)成員變量

3. 靜態(tài)成員變量的特性及語法規(guī)則

  • 特性

    • 在定義時(shí)直接通過static關(guān)鍵字修飾
    • 靜態(tài)成員變量需要在類外單獨(dú)分配空間
    • 靜態(tài)成員變量在程序內(nèi)部位于全局?jǐn)?shù)據(jù)區(qū)
  • 語法規(guī)則:Type ClassName::VarName = value;

4. 小結(jié)

  • 類中可以通過static關(guān)鍵字定義靜態(tài)成員變量
  • 靜態(tài)成員變量隸屬于類所有
  • 每一個(gè)對(duì)象都可以訪問靜態(tài)成員變量
  • 靜態(tài)成員變量在全局?jǐn)?shù)據(jù)區(qū)分配空間
  • 靜態(tài)成員變量的生命期為程序運(yùn)行期
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容