建構函式初始化列表

2021-06-18 00:50:10 字數 438 閱讀 2698

class object

private:

int v1, v2;

}

看看願意是 先初始化v2為5, 然後初始化v1為 3 倍的 v2

但是結果卻是奇葩的, 這個是因為建構函式的初始化列表遵循的原則是先初始化父類(父類也是這個原則, 那麼就相當於遞迴),然後初始化本類的成員, 最後執行建構函式的函式體;  而初始化本類的的成員的時候和初始化列表美關係 , 之和宣告順序有關, 那麼就是說即使上面那樣子寫, 也是先初始化v1, 但是初始化v1的時候發現是3倍的v2, 卻找不到v2的實際值, 那麼v1的結果就不確定; v2能夠初始化成功

必然: 記住一定(基本上是一定)得在初始化列表裡面初始化資料, 因為這個是最快的(因為編譯器必定會在初始化列表中初始化所有的資料, 如果再在函式體裡面初始化一邊就相當於初始化了兩遍, 顯然是1:2的關係)

建構函式初始化列表

建構函式初始化列表以乙個冒號開始,接著是以逗號分隔的資料成員列表,每個資料成員後面跟乙個放在括號中的初始化式。例如 example example ival 0 dval 0.0 ival 和dval 是類的兩個資料成員 上面的例子和下面不用初始化列表的建構函式看似沒什麼區別 example exa...

建構函式初始化列表

c 程式語言中有很多比較重要的概念值得我們去深入 比如今天為大家介紹的有關c 建構函式的相關概念。這一方面的知識在實際程式設計中就是乙個比較重要的應用技術。希望能個大家可以從中學到一些知識。c 建構函式初始化列表以乙個冒號開始,接著是以逗號分隔的資料成員列表,每個資料成員後面跟乙個放在括號中的初始化...

建構函式初始化列表

今天我在想類裡面類型別是什麼時候初始化的 如 class a public b b classb 假如a a 定義乙個物件會為物件的資料成員分配空間,然後呼叫建構函式進行初始化 從概念上講建構函式的執行分為兩個階段初始化階段和計算階段,先初始化再計算 對於類裡面的所有類型別都是在初始化階段進行的初始...