0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

C++之靜態(tài)成員變量和靜態(tài)成員函數(shù)學習的總結(jié)

電子設計 ? 來源:電子設計 ? 作者:電子設計 ? 2020-12-24 17:12 ? 次閱讀

不知不覺,又到周末了;上次在交流群里,答應給大家免費送開發(fā)板,一開始認為板子夠送,但是昨天整理了一下,然后送了大概十幾個網(wǎng)友就不夠送了,還有十幾個網(wǎng)友沒得到板子,這里說聲實在抱歉,下次有機會搞活動再送給大家好玩的板子:

上圖的板子有最近買的,也有以前買的(stm32、esp8266、51、eps32、小熊派、合宙的cat1、樹莓派3b+);說實話,這些板子買來,一直放在那里吃灰,后期自己的方向也不玩硬件開發(fā)板啥的;所以上面的板子都送給了公眾號讀者在校生,讓這些板子發(fā)揮它們最大的價值,板子也會在最近慢慢一一送出去;贈人與玫瑰,手有余香!

好了回歸主題,今天繼續(xù)分享c++的文章,學習還是不能落下,flag未完成,任務艱巨,好好學習。

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

平時我們在寫類的時候,類中的成員變量,我們一般是通過對象名來訪問public成員變量的,一般private(私有)的成員變量,對象是不能直接訪問的;同時我們要明白每個對象的成員變量都是專屬的,而且成員變量是不能在對象之間共享的,這就是專屬性。下面我們來做一個小的程序需求來慢慢引出靜態(tài)成員變量:

統(tǒng)計在程序運行期間某個類的對象數(shù)目

要保證該程序的安全性(不能使用全局變量)

隨時可以獲取當前對象的數(shù)目

代碼版本一:

#include<stdio.h>classTest{private:intmCount;public:Test():mCount(0){mCount++;}~Test(){--mCount;}intgetCount(){returnmCount;}};TestgTest;intmain(){Testt1;Testt2;printf("mCount=%dn",gTest.getCount());printf("mCount=%dn",t1.getCount());printf("mCount=%dn",t2.getCount());return0;}

運行結(jié)果:

root@txp-virtual-machine:/home/txp#./a.outmCount=1mCount=1mCount=1

從運行結(jié)果來我們可以看出來,對象獨立性(專屬性);而且結(jié)果沒有達到我們的預期要求,于是乎,為了解決這個問題,我們就要排靜態(tài)成員變量出場了。

1、c++中可以定義靜態(tài)成員變量:

靜態(tài)成員變量屬于整個類所有

靜態(tài)成員變量的生命期不依賴于任何對象(上面的程序,每個對象的成員變量是獨立的,所以打印出的mCount的值分別為1)

可以通過類名直接訪問公有靜態(tài)成員變量

所有對象共享類的靜態(tài)成員變量

可以通過對象名 訪問公有靜態(tài)成員變量

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

在定義時直接通過static關(guān)鍵字修飾

靜態(tài)成員變量需要在類外單獨分配空間

靜態(tài)成員變量在程序內(nèi)部位于全局數(shù)據(jù)區(qū)

3、語法規(guī)則:

TypeClassName::VarName=value;注意在類的外部進行初始化

代碼版本二:

#include<stdio.h>classTest{private:staticintmCount;public:Test()//不要使用初始化列表進行初始化{mCount++;}~Test(){--mCount;}intgetCount(){returnmCount;}};intTest::mCount=0;TestgTest;intmain(){Testt1;Testt2;printf("mCount=%dn",gTest.getCount());printf("mCount=%dn",t1.getCount());printf("mCount=%dn",t2.getCount());return0;}

運行結(jié)果:

root@txp-virtual-machine:/home/txp#./a.outmCount=3mCount=3mCount=3
審核編輯:符乾江
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4262

    瀏覽量

    62238
  • C++
    C++
    +關(guān)注

    關(guān)注

    21

    文章

    2090

    瀏覽量

    73410
收藏 人收藏

    評論

    相關(guān)推薦

    如何測試TPA3118和TPA3116的靜態(tài)電流和靜態(tài)功耗?

    1.如何測試TPA3118和TPA3116的靜態(tài)電流和靜態(tài)功耗? 2.測試時候需要帶負載嘛?(是否需要接喇叭) 3.如果用萬用表測試應該怎么測?
    發(fā)表于 10-12 06:54

    靜態(tài)鏈接和動態(tài)鏈接

    目標文件,一般是以.so文件形式存在。GCC默認是動態(tài)鏈接不需要加參數(shù)。舉例子看一下動態(tài)鏈接庫的使用方法,創(chuàng)建三個C語言文件:mymath.c、mymath.h、test.c。 通過兩個變量
    發(fā)表于 08-27 10:20

    暫態(tài)穩(wěn)定和靜態(tài)穩(wěn)定的區(qū)別是什么

    暫態(tài)穩(wěn)定和靜態(tài)穩(wěn)定是電力系統(tǒng)穩(wěn)定性分析中的兩個重要概念,它們分別描述了電力系統(tǒng)在受到擾動后的動態(tài)響應和穩(wěn)態(tài)運行狀態(tài)。下面將介紹暫態(tài)穩(wěn)定和靜態(tài)穩(wěn)定的區(qū)別,并從多個方面進行比較。 定義上的區(qū)別 暫態(tài)穩(wěn)定
    的頭像 發(fā)表于 07-26 09:41 ?1364次閱讀

    請問靜態(tài)變量如何放到flash中?

    比如有有很多的靜態(tài)變量,如何防到flash中。 我用了const修飾,編譯出來,但是還是在rodate段,該段不是在80k的ram中嗎?
    發(fā)表于 07-12 09:26

    ESP32+Eclipse如何添加C++生成的靜態(tài)庫?

    ESP32+Eclipse如何添加C++生成的靜態(tài)庫?
    發(fā)表于 06-21 08:20

    DevEco Device Tool 如何生成靜態(tài)庫供第三方使用

    根據(jù)開發(fā)需要,先將應用程序打包成靜態(tài)庫供其他組成員使用。使用IED:DevEco Device Tool 。希望相關(guān)開發(fā)人員提供幫助。謝謝!
    發(fā)表于 05-28 14:27

    如何設置靜態(tài)IP代理

    靜態(tài)IP
    jf_60146132
    發(fā)布于 :2024年04月29日 07:46:31

    淺析CMOS電路的靜態(tài)功耗和動態(tài)功耗

    CMOS電路功耗主要由動態(tài)功耗和靜態(tài)功耗組成,動態(tài)功耗又分為開關(guān)功耗、短路功耗兩部分
    的頭像 發(fā)表于 04-01 16:16 ?5047次閱讀
    淺析CMOS電路的<b class='flag-5'>靜態(tài)</b>功耗和動態(tài)功耗

    嵌入式C語言面試大挑戰(zhàn)

    C++中static關(guān)鍵字除了具有C中的作用還有在類中的使用在類中,static可以用來修飾靜態(tài)數(shù)據(jù)成員和靜態(tài)
    發(fā)表于 03-05 14:18 ?256次閱讀
    嵌入式<b class='flag-5'>C</b>語言面試大挑戰(zhàn)

    使用Tasking編譯器生成的map文件中找不到靜態(tài)全局變量的地址怎么解決 ?

    使用Tasking編譯器生成的map文件中找不到靜態(tài)全局變量的地址(變量函數(shù)中已經(jīng)使用),請問怎么解決
    發(fā)表于 02-06 07:21

    在多核單片機中,靜態(tài)局部變量需要劃分分段信息嗎?如何放到函數(shù)對應核的ram中?

    請問在多核單片機中,靜態(tài)局部變量需要劃分分段信息嗎?如何放到函數(shù)對應核的ram中?
    發(fā)表于 02-06 06:29

    Helix QAC—軟件靜態(tài)測試工具

    Helix QAC是Perforce公司(原PRQA公司)產(chǎn)品,主要用于C/C++代碼的自動化靜態(tài)分析工作,可以提供編碼規(guī)則以及信息安全相關(guān)檢查、代碼質(zhì)量度量、軟件結(jié)構(gòu)分析、測試結(jié)果管理等功能
    的頭像 發(fā)表于 01-10 17:35 ?574次閱讀
    Helix QAC—軟件<b class='flag-5'>靜態(tài)</b>測試工具

    靜態(tài)電流什么意思 靜態(tài)電流和動態(tài)電流的區(qū)別

    靜態(tài)電流什么意思 靜態(tài)電流和動態(tài)電流的區(qū)別? 靜態(tài)電流是指電荷在不發(fā)生移動的情況下所產(chǎn)生的電流。在靜電場中,電荷通過金屬導線或其他連續(xù)的導電體產(chǎn)生靜態(tài)電流的流動。
    的頭像 發(fā)表于 12-19 14:02 ?2193次閱讀

    探索C++的編程習慣與編程要點

    C++的類可以分為帶指針數(shù)據(jù)成員與不帶指針數(shù)據(jù)成員兩類,complex就屬于不帶指針成員的類。而這里要說的字符串類String,一般的實現(xiàn)會帶有一個char *指針。帶指針數(shù)據(jù)
    的頭像 發(fā)表于 11-14 09:25 ?359次閱讀
    探索<b class='flag-5'>C++</b>的編程習慣與編程要點

    C++之父新作帶你勾勒現(xiàn)代C++地圖

    為了幫助大家解決這些痛點問題,讓大家領(lǐng)略現(xiàn)代C++美,掌握其中的精髓,更好地使用C++,C++之父Bjarne Stroustrup坐不住了,他親自操刀寫就了這本《
    的頭像 發(fā)表于 10-30 16:35 ?751次閱讀
    <b class='flag-5'>C++</b>之父新作帶你勾勒現(xiàn)代<b class='flag-5'>C++</b>地圖