c 靜態變數,靜態成員變數,靜態成員函式

2022-08-02 15:27:12 字數 1205 閱讀 1415

c++靜態變數的生存期和程式的執行期相同,使用關鍵字static宣告:

static

int i = 5;

靜態變數和全域性變數有點類似,儲存在記憶體靜態/全域性變數區。靜態變數不會因為函式的呼叫而產生乙個副本,也不會隨著函式返回而失效,靜態變數在函式執行期間是共享的。

c++類的靜態成員是解決同乙個類的不同物件之間資料和函式共享問題的。如果乙個類的某個屬性是整個類共享的,可以用static宣告為靜態成員。靜態成員每個類只有乙個副本,是該類所有物件共享的。

靜態資料成員

它不屬於任何乙個物件,所以可以通過類名來訪問,一般用法" 類名::識別符號 "。

class

a

~a()

void

showcount()

private

:

static

int count; //

靜態資料成員宣告,用於記錄a類物件建立個數

}int a::count = 0; //

使用類名初始化話靜態資料成員

intmain()

程式執行結果:

1

2

靜態函式成員

上述例子中,函式showcount()是用來輸出靜態成員變數count的,但是必須通過物件a1或者a2來呼叫。如果沒有宣告a類的物件,則無法呼叫showcount()函式。這是就需要將showcount()函式宣告為靜態成員函式了。

類的靜態成員函式可以通過類名直接呼叫,但是直接用類名區呼叫不能訪問非靜態資料成員,因為沒有具體的物件例項,所以靜態成員函式一般都是用來訪問類的靜態成員資料的。

class

a

~a()

static

void showcount()

private

:

static

int count; //

靜態資料成員宣告,用於記錄a類物件建立個數

}int a::count = 0; //

使用類名初始化話靜態資料成員

intmain()

執行結果:

0

12

靜態變數和靜態成員函式

c 中的靜態成員變數和靜態成員函式。1 類靜態資料成員在編譯時建立並初始化 在該類的任何物件建立之前就存在,不屬於任何物件,而非靜態類成員變數則是屬於物件所有的。類靜態資料成員只有乙個拷貝,為所有此類的物件所共享。特別需要注意的一點是 靜態資料成員不能在類中初始化 對於常量靜態類變數有待考證,好像可...

C 靜態成員變數,靜態成員函式

資料成員可以分靜態變數 非靜態變數兩種.靜態成員 靜態類中的成員加入static修飾符,即是靜態成員.可以直接使用類名 靜態成員名訪問此靜態成員,因為靜態成員存在於記憶體,非靜態成員需要例項化才會分配記憶體,所以靜態成員不能訪問非靜態的成員.因為靜態成員存在於記憶體,所以非靜態成員可以直接訪問類中靜...

靜態成員函式 靜態成員變數

靜態的成員函式,同靜態資料成員類似,它也是屬於類,而不是屬於某乙個物件的。靜態成員函式不能訪問非靜態的資料成員,它只能訪問靜態資料成員,也只能呼叫其它的靜態成員函式。原因是 當前物件的位址 this 是被隱含地傳遞到被呼叫的函式的。但乙個靜態成員函式沒有 this 指標,所以它無法訪問非靜態的成員函...