8 類的靜態成員函式

2021-06-26 02:19:14 字數 2024 閱讀 5760

如果類中需要統計多少個物件存在,c++有了類的靜態成員變數和靜態成員函式。

* 靜態成員屬於整個類所有,不需要依賴任何物件

* 可以通過類名直接訪問public靜態成員

* 可以通過物件名訪問public靜態成員

* 靜態成員函式可以直接訪問靜態成員變數

靜態成員變數的定義:

static 關鍵字修飾

靜態成員變數不依賴任何物件,需要在類外單獨分配空間。

type classnmae::varname;

#include class test

static void setvalue(int v)

void print() };

int test::i;

int main()

類的靜態成員

從命名空間的角度

類的靜態成員只是類這個命名空間中的全域性變數和全域性函式。

不同之處是,類可以對靜態成員進行訪問許可權的限制,而命名空間不可以的。

從面相物件的角度

類的靜態成員函式屬於類概念本身。

類的所有物件共享相同的靜態成員。

通過乙個簡單示例看靜態成員函式和普通成員函式的區別:

#include struct c1

;class c2

;/// class和struct,乙個私有,乙個公有,沒有區別

c++類中的成員函式和成員變數是分開儲存的

* 成員變數

——普通成員變數:儲存於物件中,與struct變數一樣,有相同的記憶體布局和位元組對齊方式。

* 成員函式

——儲存於**段中

靜態成員與普通成員函式的區別

* 靜態成員函式不包含指向具體物件的指標

* 普通成員函式包含乙個指向具體物件的this指標。

小結:

c++類中可以包含屬於類的靜態成員。

靜態成員變數在全域性資料區分配空間。

靜態成員函式不包含隱藏的this指標

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

通過物件名可以訪問靜態成員,所有的物件可以共享同一類靜態成員。

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

當將類的某個資料成員宣告為static時,該靜態資料成員只能被定義一次,而且要被同類的所有物件共享。各個物件都擁有類中每乙個普通資料成員的副本,但靜態資料成員只有乙個例項存在,與定義了多少類物件無關。靜態方法就是與該類相關的,是類的一種行為,而不是與該類的例項物件相關。靜態資料成員的用途之一是統計有...

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

當將類的某個資料成員宣告為static時,該靜態資料成員只能被定義一次,而且要被同類的所有物件共享。各個物件都擁有類中每乙個普通資料成員的副本,但靜態資料成員只有乙個例項存在,與定義了多少類物件無關。靜態方法就是與該類相關的,是類的一種行為,而不是與該類的例項物件相關。靜態資料成員的用途之一是統計有...

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

當將類的某個資料成員宣告為static時,該靜態資料成員只能被定義一次,而且要被同類的所有物件共享。各個物件都擁有類中每乙個普通資料成員的副本,但靜態資料成員只有乙個例項存在,與定義了多少類物件無關。靜態方法就是與該類相關的,是類的一種行為,而不是與該類的例項物件相關。靜態資料成員的用途之一是統計有...