從概念上講,可以認為建構函式分兩個階段執行:(1)初始化階段;(2)普通的計算階段。計算階段由建構函式函式體中的所有語句組成。不管成員是否在建構函式初始化列表中顯式初始化,類型別的資料成員總是在初始化階段初始化。初始化發生在計算階段開始之前。
在建構函式初始化列表中沒有顯式提及的每個成員,使用與初始化變數相同的規則來進行初始化。執行該型別的預設建構函式,來初始化類型別的資料成員。內建或復合型別的成員的初始值依賴於物件的作用域:在區域性作用域中這些成員
不被初始化,而在全域性作用域中它們被初始化為 0。
有些成員必須在建構函式初始化列表中進行初始化。對於這樣的成員,在建構函式函式體中對它們賦值不起作用。沒有預設建構函式的類型別的成員,以及 const 或引用型別的成員,不管是哪種型別,都必須在建構函式初始化列表中進行初始化。這也就是為什麼擁有沒有預設建構函式的類型別成員的類必須自定義建構函式以初始化列表方式初始化類型別成員,及擁有const或引用型別成員的類必須自定義建構函式以初始化列表方式初始化這些成員。
成員被初始化次序:就是定義成員的次序。
成員初始化列表
類物件的構造順序是這樣的 1.分配記憶體,呼叫建構函式時,隱式 顯示的初始化各資料成員 初始化階段可以是顯式的或隱式的,取決於是否存在成員初始化表。隱式初始化階段按照宣告的順序依次呼叫所有基類的預設建構函式,然後是所有成員類物件的預設建構函式。2.進入建構函式後在建構函式中執行一般計算 計算階段由建...
成員初始化列表
任乙個物件的建立都要呼叫建構函式,而在建構函式中一般要給物件屬性賦值。成員初始化列表 member initialize list 是建構函式中特有的語法,用以簡化對物件屬性的賦值。其用法如下 class myclass 以上 相當於 class myclass 用成員初始化列表的語法來表述很顯然 ...
成員初始化列表
1 對於const資料成員,必須在執行到建構函式體之前,即建立物件時進行初始經。2 成員初始經列表由逗號分隔的初始化列表組成 前面帶冒號 它位於引數列表的右括號之後 函式體左括號之前。3 初值可以是常量或建構函式的引數列表中的引數。這種方法並不限於初始化常量。例如下 queue queue int ...