類的靜態成員變數

2021-10-03 10:24:33 字數 1082 閱讀 9563

通過物件名能夠訪問public成員變數,每個物件的成員變數都是專屬的,成員變數不能再物件之間共享,先來看乙個例子:

#include

class

test

~test()

intgetcount()

};test gtest;

intmain()

結果:

sice@sice:~$ g++ a.c

sice@sice:~$ ./a.out

count = 1

count = 1

count = 1

這是因為我們定義的mcount是乙個成員變數,而成員變數是每個物件自己都有一套的,也就是說gtest,t1,t2分別擁有乙個mcount,如果想要列印出3就要引入靜態成員變數(不建議使用全域性變數,不安全)

靜態成員變數:

靜態成員變數屬於整個類所有,它的生命期不依賴於任何物件,可以通過類名直接訪問公有靜態成員變數,所有物件共享類的靜態成員變數,可以通過物件名訪問公有靜態成員變數

特性:

定義時直接通過static關鍵字修飾

靜態成員變數需要在類外單獨分配空間

靜態成員變數在程式內部位於全域性資料區

語法:

type classname::varname = value;

修改**:

#include

class

test

~test()

intgetcount()

};test gtest;

int test::mcount =0;

intmain()

sice@sice:~$ gedit a.c

sice@sice:~$ g++ a.c

sice@sice:~$ ./a.out

count = 3

count = 3

count = 3

類的靜態成員變數

新需求 統計在程式執行期間某個類的物件數目 保證程式的安全性 不能使用全域性變數 隨時可以獲取當前物件的數目 incldue class test test intgetcount test gtest intmain 輸出結果為 1 1 1,沒有達到使用者需求!每個成員都擁有乙個變數,不是公共的,...

類的靜態成員變數

在c 中可以定義靜態成員變數 靜態成員變數屬於整個類所有 靜態成員變數的生命週期不依賴於任何物件 可以通過類名直接訪問公有靜態成員變數 所有物件共享類的靜態成員變數 可以通過物件名訪問公有靜態成員變數 靜態成員變數 靜態成員變數的特性 在定義時直接通過static關鍵字修飾 靜態成員變數需要在類外單...

類中的靜態成員變數 靜態成員函式

類中的靜態成員變數 靜態成員函式?1 類中的靜態成員變數 靜態成員變數屬於整個類,不屬於某個特定的物件,因此無論建立了多少個物件,所有物件都共享類中的靜態成員變數。靜態成員變數必須在類內宣告,類外初始化。2 類中的靜態成員函式 靜態成員函式也是屬於類本身,而不屬於某個特定的物件。靜態成員函式與普通成...