類成員變量初始化 類得靜態(tài)成員如何初始化?
類得靜態(tài)成員如何初始化?通常,靜態(tài)數(shù)據(jù)成員在類聲明中聲明,并在包含類方法的文件中初始化。初始化時(shí),作用域運(yùn)算符用于指示靜態(tài)成員所屬的類。但是,如果靜態(tài)成員是整數(shù)或枚舉常量,則可以在類聲明中對(duì)其進(jìn)行初始
類得靜態(tài)成員如何初始化?
通常,靜態(tài)數(shù)據(jù)成員在類聲明中聲明,并在包含類方法的文件中初始化。初始化時(shí),作用域運(yùn)算符用于指示靜態(tài)成員所屬的類。但是,如果靜態(tài)成員是整數(shù)或枚舉常量,則可以在類聲明中對(duì)其進(jìn)行初始化。
當(dāng)類中含有常量和靜態(tài)數(shù)據(jù)成員時(shí),如何對(duì)它們初始化?
類中只能初始化靜態(tài)常量整數(shù)數(shù)據(jù)成員。
這是因?yàn)?,?dāng)時(shí)人們認(rèn)為類定義中的數(shù)據(jù)定義是聲明,而不是數(shù)據(jù)定義。
僅當(dāng)對(duì)象(變量、常量)由類定義時(shí)才定義數(shù)據(jù)。
靜態(tài)常量整數(shù)數(shù)據(jù)成員
1)不是對(duì)象的一部分
2)可以生成常量表達(dá)式,因此可以在類中初始化。---否則,不適合將其用作數(shù)組的大小。
靜態(tài)常量整數(shù)數(shù)據(jù)成員可用作常量表達(dá)式。如果沒有在內(nèi)部定義
,則在沒有定義的情況下不能使用常量表達(dá)式。
C 11非靜態(tài)成員變量(常量)可以直接初始化,也可以在初始化表中初始化。
在C 11中初始化非靜態(tài)成員變量(常量)可視為為為變量(常量)分配默認(rèn)值。
派生類的構(gòu)造函數(shù)的成員初始化列表中,不能包含?
如何初始化一個(gè)類中的靜態(tài)成員變量?
如果不考慮父類,只需先靜態(tài)初始化,然后非靜態(tài)初始化即可。
靜態(tài)初始化包括靜態(tài)成員變量和靜態(tài)塊的初始化。實(shí)際上,靜態(tài)塊在編譯期間是集中的。
非靜態(tài)初始化包括非靜態(tài)成員變量初始化、非靜態(tài)塊和構(gòu)造方法,編譯后集中在構(gòu)造方法中。
如果沒有相互通話,那就非常簡(jiǎn)單了。首先,靜態(tài)初始化。如果在靜態(tài)初始化過程中調(diào)用了后者呢?!你可以編寫一個(gè)代碼來測(cè)試它:
輸出:
你可以先看到它確實(shí)是靜態(tài)初始化,但是中間有對(duì)構(gòu)造方法的調(diào)用。
雖然編譯器不報(bào)告錯(cuò)誤,但此調(diào)用實(shí)際上是有風(fēng)險(xiǎn)的。
由于靜態(tài)成員變量(如果已設(shè)置)在初始化之前調(diào)用類構(gòu)造函數(shù)(假設(shè)存在依賴關(guān)系),因此該過程實(shí)際上是不可控制的。
看看這個(gè)例子:你能想象這種輸出嗎?
因此,如果必須在靜態(tài)初始化過程中調(diào)用此類的構(gòu)造函數(shù)。
一定要注意初始化順序,準(zhǔn)確到語句。