C 建構函式初始化變數的順序

2021-10-10 10:43:10 字數 439 閱讀 2775

在《c++中類的建構函式初始值列表》中提到,c++中類的建構函式初始值列表可以對類的成員進行初始化。

但是需要注意的是,建構函式的初始化列表只是說明各變數的初始值,並沒有指定變數的初始化順序。

其中,myclass類建構函式的初始化列表只是說明了變數i的初始值是1,變數j的初始值是i的值。但是並不一定是先初始化i而後初始化j。

class myclass 

};

變數的初始化順序與建構函式的初始化列表無關,而與變數在類中宣告的順序有關。因此,在myclass類的建構函式中,先初始化j,後初始化i。此時,j的初始值未指定,而i的初始值是1。如果將myclass類中變數宣告的順序改變一下,

class myclass 

};

此時,建構函式先初始化i,後初始化j,i和j的初始值是1。

C 成員變數 建構函式的初始化順序

一 c 成員變數初始化 1 普通的變數 一般不考慮啥效率的情況下 可以在建構函式中進行賦值。考慮一下效率的可以再建構函式的初始化列表中進行 2 static 靜態變數 本地化資料和 範圍 static變數屬於類所有,而不屬於類的物件,因此不管類被例項化了多少個物件,該變數都只有乙個。在這種性質上理解...

建構函式和變數初始化順序

class a 輸出 a 這一行和下一行是為了構造c類物件的基類b,而在構造基類b的時候需要先初始化b的成員變數a,因而呼叫了a的建構函式 b a 這一行和下一行是c類物件在初始化成員變數b時,需要構造b,因此需要先初始化b的成員變數a,因而再次呼叫了a的建構函式 b a 這一行是c類物件初始化成員...

C 建構函式初始化順序

c 建構函式按下列順序被呼叫 1 任何虛擬基類的建構函式按照它們被繼承的順序構造 2 任何非虛擬基類的建構函式按照它們被繼承的順序構造 3 任何成員物件的建構函式按照它們宣告的順序呼叫 4 類自己的建構函式。include using namespace std class obj1 class o...