類靜態成員的個人淺見

2021-06-20 22:29:04 字數 545 閱讀 5707

c++類靜態成員有幾個比較特別的地方需要引起注意

不能在類的宣告中初始化靜態成員變數,這是因為宣告中僅僅描述了如何分配記憶體,但並不實際分配記憶體;

對於靜態類成員,可以在類宣告之外使用單獨的語句進行初始化,這是因為類靜態成員是單獨儲存的,而不是類的組成部分;

針對第2條的補充:如果類宣告在標頭檔案中(這可能是通常的做法),那麼請不要把靜態成員的初始化放在該標頭檔案中,因為程式可能會將標頭檔案包含在其他的幾個檔案中,這將導致多個對該靜態成員初始化語句出現在程式中,從而引發錯誤;在這種情況下,可以考慮把初始化放在類的方法檔案(.cpp)中(推薦做法);

可以把類靜態成員的初始化語句放到應用程式main()函式之前的全域性資料宣告和定義處;但千萬注意不能在任何函式的內部為靜態成員初始化和分配空間,這是因為函式是在程式執行的過程中才被呼叫的,而「類成員變數必須在程式一開始執行的時候就存在」。

如果靜態成員是const整型型別或者列舉型,則可以在類宣告中初始化(c++98標準);

對於新的c++11標準,上述方法被擴充套件到可以支援double靜態常量的初始化。

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

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

類的靜態成員

類的靜態成員存在於任何物件之外,物件中不包含任何與靜態資料成員有關的資料。class account 對於account的每乙個物件豆漿包含owner和amount兩個資料成員,而對於靜態成員interestrate只有乙個,且被所有的物件共享。double r r account rate 2.使...

類的靜態成員

1,static靜態成員,靜態成員 變數 or 函式 可以是public or private,訪問許可權與普通 非static 成員一樣,受到限定符限制 2,靜態成員 變數 or 函式 不與任何物件繫結在一起,而是被所有物件共享 特別是靜態成員函式,它不包含this 指標引數 3.public靜態...