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

2021-07-29 07:25:27 字數 969 閱讀 8808

static資料成員:

靜態資料成員儲存在全域性資料區,靜態資料成員定義時要分配空間,所以不能在類宣告中定義。應該在類外定義。

靜態資料成員和普通資料成員一樣遵從public、private、protected訪問規則。

由於靜態資料成員在全域性資料區分配記憶體,屬於本類的所有物件共享,它不屬於特定的類物件,在沒有產生類物件時作用域就可見。即在沒有產生類的例項時,我們就可以操作它。

靜態資料成員的初始化與一般資料成員的初始化不同,即它的初始化格式為:

《資料型別》《類名》::《靜態資料成員》 = 《值》

類的靜態資料成員有兩種訪問方式:

如果靜態資料成員的訪問許可權允許的話,即為public成員,可在程式中,按上述格式來引用靜態資料成員;

靜態資料成員主要用在各個物件都有相同的某項屬性的時候。比如對乙個存款類,每個例項的利息都是相同的,所以把利息可以設為存款類的靜態資料成員。這有兩個好處,一是不管定義多少個存款類物件,利息資料成員都共享分配在全域性資料區的記憶體,所以節省了儲存空間。二是一旦利息需要改變時,只要改變一次,則所有存款類物件的利息全改變過來了。

同全域性變數相比,使用靜態資料成員有兩個優勢:

(1)靜態資料成員沒有進入程式的全域性名字空間,因此不存在與程式中其他全域性名字衝突的可能性;

(2)可以實現資訊隱藏。靜態資料成員可以使private成員,而全域性變數不能。

static函式:

(1)出現在類體外的函式不能指定關鍵字static;

(2)靜態成員之間可以互相訪問,包括靜態成員函式訪問靜態資料成員和訪問靜態成員函式;

(3)非靜態成員函式可以任意地訪問靜態成員函式和靜態資料成員;

(4)靜態成員函式不能訪問非靜態成員函式和非靜態資料成員;

(5)由於沒有this指標的額外開銷,因此靜態成員函式與類的全域性函式相比,速度上會有少許的增長;

(6)呼叫靜態成員函式,可以用成員訪問操作符(.)和(->)為乙個類的物件或指向類物件的指呼叫靜態成員函式。

c 靜態函式和靜態成員

靜態函式 在類內宣告static,在類外定義時不能再用static,靜態函式可以訪問類的靜態物件。靜態物件 靜態物件不屬於任何乙個物件,所以他們並不是在建立類的物件時被定義的,也就是不能被建構函式初始化。要想定義全域性變數一樣定義靜態物件。生命週期和全域性變數一樣。通常,為了防止物件多次定義,最好把...

c 類的靜態成員(靜態函式和靜態變數)

標誌 都會加上static 靜態成員分為 1.靜態成員變數 1.1 所有的物件共享同乙份資料,都可以對其做出永久性修改 1.2 在編譯階段分配記憶體 1.3 類內宣告,類外初始化 初始化語法 int person a 0 意思就是把person類中的a初始化為零 2.靜態成員函式 2.1所有物件共享...

C 靜態成員 靜態資料成員和靜態函式成員

由關鍵字static修飾說明的類成員,成為靜態類成員 static class member 包括 靜態資料成員和靜態函式成員。類的靜態成員為其所有物件共享,不管有多少物件,靜態成員只有乙份存於公用記憶體中。雖然使用static修飾說明,但與函式中的靜態變數有明顯差異。在類定義中,用關鍵字stati...