欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++分析講解類的靜態(tài)成員變量是什么

 更新時間:2022年04月23日 10:08:05   作者:清風自在 流水潺潺  
在C++中,靜態(tài)成員是屬于整個類的而不是某個對象,靜態(tài)成員變量只存儲一份供所有對象共用。所以在所有對象中都可以共享它。使用靜態(tài)成員變量實現(xiàn)多個對象之間的數(shù)據(jù)共享不會破壞隱藏的原則,保證了安全性還可以節(jié)省內(nèi)存

一、成員變量的回顧

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

二、新的需求

  • 統(tǒng)計在程序運行期間某個類的對象數(shù)目
  • 保證程序的安全性(不能使用全局變量)
  • 隨時可以獲取當前對象的數(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é)果如下:

雖然這段代碼可以獲得當前定義對象的數(shù)量,但是使用了全局變量,不能保證程序的安全性,那么有什么好的辦法呢?且看下面。

三、靜態(tài)成員變量

在 C++ 中可以定義靜態(tài)成員變量

  • 靜態(tài)成員變量屬于整個類所有
  • 靜態(tài)成員變量的生命期不依賴于任何對象
  • 可以通過類名直接訪問公有靜態(tài)成員變量
  • 所有對象共享類的靜態(tài)成員變量
  • 可以通過對象名訪問公有靜態(tài)成員變量

靜態(tài)成員變量的特性

  • 在定義時直接通過 static 關(guān)鍵字修飾
  • 靜態(tài)成員變量需要在類外單獨分配空間
  • 靜態(tài)成員變量在程序內(nèi)部位于全局數(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(); 動態(tài)在堆空間生成了一個 test 對象,所以會觸發(fā)構(gòu)造函數(shù)的調(diào)用,所以 count 變成了 4,delete pt; 后 count 就變成 3 了。

四、小結(jié)

  • 類中可以通過 static 關(guān)鍵定義靜態(tài)成員變量
  • 靜態(tài)成員變量隸屬于類所有
  • 每一個對象都可以訪問靜態(tài)成員變量
  • 靜態(tài)成員變量在全局數(shù)據(jù)區(qū)分配空間
  • 靜態(tài)成員變量的生命期為程序運行期

到此這篇關(guān)于C++分析講解類的靜態(tài)成員變量是什么的文章就介紹到這了,更多相關(guān)C++靜態(tài)成員變量內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 從匯編看c++函數(shù)的默認參數(shù)的使用說明

    從匯編看c++函數(shù)的默認參數(shù)的使用說明

    本篇文章介紹了,在c++中函數(shù)的默認參數(shù)的使用說明分析。需要的朋友參考下
    2013-05-05
  • C++ Boost Fusion創(chuàng)建異構(gòu)容器詳解

    C++ Boost Fusion創(chuàng)建異構(gòu)容器詳解

    Boost.Fusion 使創(chuàng)建異構(gòu)容器成為可能。例如,您可以創(chuàng)建一個向量,其第一個元素是 int,第二個元素是字符串。此外,Boost.Fusion 提供了處理異構(gòu)容器的算法。您可以將 Boost.Fusion 視為異構(gòu)容器的標準庫
    2022-11-11
  • Qt實現(xiàn)導(dǎo)出QTableWidget/QTableView數(shù)據(jù)

    Qt實現(xiàn)導(dǎo)出QTableWidget/QTableView數(shù)據(jù)

    這篇文章主要介紹了在Qt中實現(xiàn)將QTableWidget或者QTableView中的數(shù)據(jù)直接導(dǎo)出的示例代碼,文中的示例代碼講解詳細,感興趣的可以了解一下
    2022-01-01
  • 基于C語言航班信息查詢與檢索

    基于C語言航班信息查詢與檢索

    這篇文章主要為大家詳細介紹了基于C語言航班信息查詢與檢索,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • 關(guān)于C++運算符重載的一些困惑詳解

    關(guān)于C++運算符重載的一些困惑詳解

    這篇文章主要給大家介紹了關(guān)于C++運算符重載的一些困惑,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-04-04
  • C語言的abs()函數(shù)和div()函數(shù)你了解嗎

    C語言的abs()函數(shù)和div()函數(shù)你了解嗎

    這篇文章主要為大家詳細介紹了C語言的abs()函數(shù)和div()函數(shù),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • C語言new操作的安全性分析

    C語言new操作的安全性分析

    這篇文章主要介紹了C語言new操作的安全性分析,需要的朋友可以參考下
    2014-07-07
  • EasyC++自動存儲持續(xù)性

    EasyC++自動存儲持續(xù)性

    這篇文章主要介紹了EasyC++自動存儲持續(xù)性,下面文章圍繞EasyC++自動存儲持續(xù)性的相關(guān)資料展開全文資料,需要的小伙伴可以參考一下下面文章的具體內(nèi)容,希望對你的學習有所幫助
    2021-12-12
  • C語言二維數(shù)組中的查找的實例

    C語言二維數(shù)組中的查找的實例

    這篇文章主要介紹了C語言二維數(shù)組中的查找的實例的相關(guān)資料,需要的朋友可以參考下
    2017-07-07
  • C/C++ 中g(shù)cc和g++的對比與區(qū)別

    C/C++ 中g(shù)cc和g++的對比與區(qū)別

    這篇文章主要介紹了C/C++ 中g(shù)cc和g++的對比與區(qū)別的相關(guān)資料,需要的朋友可以參考下
    2017-07-07

最新評論