C 知識點複習 類的靜態成員和靜態函式

2021-10-22 03:24:38 字數 1939 閱讀 3733

新的需求

統計在程式執行期間某個類的物件數目

保證程式的安全性(不能使用全域性變數)

隨時可以獲取當前物件的數目

成員變數的回顧:

通過物件名能夠訪問 public 成員變數

每個物件的成員變數都是專屬的

成員變數不能在物件之間共享

靜態成員變數:

在c++中可以定義靜態成員變數

靜態成員變數屬於整個類所有

靜態成員變數的生命期不依賴於任何物件

可以通過類名直接訪問公有靜態成員變數

所有物件共享類的靜態成員變數

可以通過物件名訪問公有靜態成員變數

靜態成員變數的特性:

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

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

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

語法規則 :

type classname::varname = value;

#include

class

test

~test()

intgetcount()

};int test::ccount =0;

test gtest;

intmain()

編譯結果:

count =

3count =

3count =

3count =

4count =

3

類的靜態成員函式

1.靜態成員函式是類中的特殊的成員函式

2.靜態成員函式隸屬於整個類所有

3.可以通過類名直接訪問公有的靜態成員函式

4.可以通過物件名訪問公有的靜態成員函式

#include

using

namespace std;

class

demo

;int demo::

geti()

void demo::

staticfunc

(const

char

* s)

void demo::

staticseti

(demo& d,

int v)

/* 不能直接改寫成,不能訪問普通成員變數

靜態成員函式不可以直接訪問普通的成員變數,但可以通過類名或者物件名來訪問

void demo::staticseti(int v)

*/int

main()

編譯結果:

最終解決方案:

#include

using

namespace std;

class

test

~test()

static

intgetcount()

};int test::ccount =0;

intmain()

編譯結果:

count =

0count =

2count =

2count =

3count =

2

小結:

靜態成員函式是類中特殊的成員函式

靜態成員函式沒有隱藏的 this 引數

靜態成員函式可以通過類名直接訪問

靜態成員函式只能訪問靜態成員變數(函式)

靜態類和靜態類成員(C )

靜態類與非靜態類基本相同,但存在乙個區別 靜態類不能例項化。也就是說,不能使用 new 關鍵字建立靜態類型別的變數。因為沒有例項變數,所以要使用類名本身訪問靜態類的成員。例如,如果名為 utilityclass 的靜態類有乙個名為 methoda 的公共方法,則按下面的示例所示呼叫該方法 c uti...

C 靜態類成員和靜態類成員函式

一 靜態類成員 include class stringbad 靜態類成員有乙個特點 無論建立多少物件,程式都只能建立乙個靜態變數副本。也就是說所有物件共享同乙個靜態成員,就像你家 可供全家家庭成員共享一樣。假設建立了10個stringbad物件,將有10個str成員和len成員,但是只共享乙個nu...

C 基礎 靜態成員和靜態類

靜態成員 1.靜態成員是被static關鍵字修飾的.是屬於類的.通過類名.靜態成員來訪問.2.例項成員 沒有被static關鍵字修飾的 是屬於物件的.通過物件名.例項成員來訪問.3.例項成員屬於物件.4.在這個類第一次被載入的時候,這個類下面的所有的靜態成員會被載入 5.靜態成員只被建立1次.所以靜...