建構函式的初始化

2021-08-31 11:33:57 字數 597 閱讀 1102

一般成員變數的初始化有兩種方式:

1、在建構函式體內進行賦值操作

class abc;

abc::abc(const  std::string& name,const std::string& addres,const std::list& phones)

這裡每個成員都是直接賦值操作,因為初值已經有預設建構函式完成了。

2、在類的建構函式中,不再函式體內對變數賦值,而是在引數列表後,跟乙個冒號和初始化列表

class abc

private:

std::string thename;

std::stringa theddress;

std::listthephone;

};

使用初始化列表的必要性:1、如果類中有const成員或引用型別的成員,由於const物件和引用型別都只能初始化,不支援賦值,所以這種情況必須使用初始化列表。2、當類中含有其他類作為成員,作為成員的類的賦值操作被禁止了,也必須使用初始化列表。

使用初始化列表不僅可以適用更多的情況,還可以省去構造臨時物件,直接完成初始化工作,效率更高。

建構函式初始化列表和初始化函式

其實並沒有所謂的初始化函式的概念,本文中的初始化函式只是說明在函式體內進行賦值。而初始化列表才是真正意義上的物件初始化。使用初始化列表效率會高一點。c 規定,物件的成員變數的初始化動作發生在進入建構函式本體之前。在建構函式體內只是賦值,並不是初始化。請看下面這個栗子 class base publi...

建構函式初始化(預設構造)

當且僅當沒有定義任何建構函式時,編譯器才會提供預設建構函式。為類定義了建構函式後,程式設計師就必須為他提供預設建構函式。我們怎麼理解這句話呢?首先,什麼是預設建構函式?預設建構函式時在未提供顯示初始化時,用來建立物件的建構函式。也就是說,它是用於下面這種宣告的建構函式 expa expa 然後我們看...

建構函式初始化列表

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