c++類的普通成員變數與成員函式是與該類的物件有關,類的靜態成員與物件無關,而與該類本身相關。
使用關鍵字static修飾的成員是類的靜態成員。靜態成員可以被宣告成public或private,靜態成員可以是常量、引用、指標、類型別和函式等。
可以在類的內部定義靜態函式,也可以在類的外部定義靜態函式。需要注意的是,static關鍵字只能在類內部出現,而在類外部定義靜態函式時,不能重複使用static。
class myclass
; static void myfunc2();
};void myclass::myfunc2()
其中,myfunc1()和myfunc2()是myclass類的靜態成員函式,其中myfunc1()在myclass類內部定義,myfunc2()在myclass類外部定義,定義myfunc2()時,不能用static來修飾該函式,如果新增了static關鍵字,編譯器的報錯資訊為「error c2724: 「myclass::myfunc2」:「static」不應在檔案範圍內定義的成員函式上使用」。
void myclass::myfunc2()
myfunc2是在myclass類外部定義的靜態成員函式,在該函式中可以直接使用myclass類的其他成員。因為myfunc2()內部就屬於myclass類的作用域之內了。
定義類的靜態成員變數時,不能在宣告的時候直接定義。
class myclass
;
此時編譯器報錯的資訊為「error c2864: 「myclass::i」: 帶有類內初始值設定項的靜態 資料成員 必須具有不可變的常量整型」。必須在類外對靜態成員進行定義。
class myclass
;int myclass::i = 1;
c++類的靜態成員與類的物件無關,因此不能在類的建構函式的初始化列表中中定義靜態成員變數。
class myclass
};
此時,報錯資訊為「error c2438: 「i」: 無法通過建構函式初始化靜態類資料」。 C 類中的靜態成員
相關規則 1 靜態函式不能呼叫類的成員變數和成員函式 2 成員函式可以呼叫靜態變數和靜態函式 3 靜態變數和靜態函式不屬於類的任何具體物件 沒有this指標 但是可被類的所有物件共享。4 類的靜態變數和靜態函式不能被其派生類繼承 5 靜態變數必須初始化後才能被呼叫 無論是成員函式還是靜態函式呼叫 靜...
C 類中的靜態成員
我們學習乙個知識點,首先想到的是為什麼要有這個東西的存在呢?對於c 類的靜態成員存在的理由如下 有的時候類需要它的一些成員與類本身無關,而不是與類的各個物件保持關聯。例如 乙個銀行賬戶型別類可能需要乙個資料成員來表示當前基準利率。在此例中,我們希望利率與類關聯,而非與類的每個物件關聯。從實現的效率的...
C 類中的靜態成員
1 靜態類成員變數 ifndef cl student h define cl student h include class cl student endif include qstring cl student sta school uestc 初始化靜態類成員變數 cl student cl ...