最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

一、成員變量的回顧

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

二、新的需求

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

下面來(lái)看示例:

#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ù)量,但是使用了全局變量,不能保證程序的安全性,那么有什么好的辦法呢?且看下面。

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

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

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

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

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

語(yǔ)法規(guī)則:

Type ClassName:VarName = value;

下面來(lái)看一下靜態(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 了。

四、小結(jié)

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

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

相關(guān)文章

  • C++17新特性個(gè)人總結(jié)

    C++17新特性個(gè)人總結(jié)

    這篇文章主要介紹了C++17新特性個(gè)人總結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • 簡(jiǎn)述c++ 發(fā)展史

    簡(jiǎn)述c++ 發(fā)展史

    這篇文章主要介紹了c++ 發(fā)展的過(guò)程,幫助大家更好的了解和學(xué)習(xí)c++,感興趣的朋友可以了解下
    2020-08-08
  • C語(yǔ)言的基本語(yǔ)法詳解

    C語(yǔ)言的基本語(yǔ)法詳解

    本篇文章主要講解C語(yǔ)言 基本語(yǔ)法,這里提供簡(jiǎn)單的示例和代碼來(lái)詳細(xì)講解C語(yǔ)言的基本語(yǔ)法,開始學(xué)習(xí)C語(yǔ)言的朋友可以看一下,希望能夠給你帶來(lái)幫助
    2021-09-09
  • C++實(shí)現(xiàn)LeetCode(140.拆分詞句之二)

    C++實(shí)現(xiàn)LeetCode(140.拆分詞句之二)

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(140.拆分詞句之二),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • 5分鐘內(nèi)了解C語(yǔ)言的指針

    5分鐘內(nèi)了解C語(yǔ)言的指針

    這篇文章主要介紹了5分鐘內(nèi)了解C語(yǔ)言的指針,本文講解了指針、引用和取值、void指針、NULL指針和未初始化指針、指針和數(shù)組等內(nèi)容,需要的朋友可以參考下
    2015-01-01
  • 利用Matlab編寫簡(jiǎn)易版連連看小游戲

    利用Matlab編寫簡(jiǎn)易版連連看小游戲

    連連看作為經(jīng)典的小游戲,一定是很多人的回憶吧。本文將用Matlab實(shí)現(xiàn)這一經(jīng)典的游戲,文中示例代碼具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • OpenCV 圖像拼接和圖像融合的實(shí)現(xiàn)

    OpenCV 圖像拼接和圖像融合的實(shí)現(xiàn)

    本文主要介紹了OpenCV 圖像拼接和圖像融合,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • 使用代碼驗(yàn)證linux子進(jìn)程與父進(jìn)程的關(guān)系

    使用代碼驗(yàn)證linux子進(jìn)程與父進(jìn)程的關(guān)系

    Linux下父進(jìn)程可以使用fork 函數(shù)創(chuàng)建子進(jìn)程,但是當(dāng)父進(jìn)程先退出后,子進(jìn)程會(huì)不會(huì)也退出呢?通過(guò)下面這個(gè)小實(shí)驗(yàn),我們能夠很好的看出來(lái)
    2014-02-02
  • C語(yǔ)言實(shí)現(xiàn)雙向鏈表

    C語(yǔ)言實(shí)現(xiàn)雙向鏈表

    本文給大家分享的是一段使用C語(yǔ)言實(shí)現(xiàn)雙向鏈表的代碼,完全是根據(jù)自己的理解和認(rèn)識(shí)來(lái)編寫的,希望大家能夠喜歡,文章的最后附上了一個(gè)網(wǎng)友寫的對(duì)于雙向鏈表刪除節(jié)點(diǎn)、插入節(jié)點(diǎn)、雙向輸出等操作的代碼,也非常不錯(cuò),推薦給大家
    2015-03-03
  • 用C++實(shí)現(xiàn)推箱子小游戲

    用C++實(shí)現(xiàn)推箱子小游戲

    這篇文章主要為大家詳細(xì)介紹了用C++實(shí)現(xiàn)推箱子小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07

最新評(píng)論

上林县| 辽阳县| 航空| 商城县| 汉沽区| 呼和浩特市| 子长县| 梅河口市| 靖西县| 紫阳县| 福海县| 赞皇县| 墨江| 牙克石市| 迁安市| 兴义市| 丹棱县| 洛宁县| 大石桥市| 忻州市| 临洮县| 六枝特区| 桃江县| 汾阳市| 工布江达县| 海原县| 罗平县| 昆山市| 鄂温| 珠海市| 安泽县| 澄迈县| 侯马市| 林州市| 甘谷县| 枞阳县| 临沧市| 大安市| 稻城县| 大厂| 台安县|