建構函式初始化時必須採用初始化列表的情況

2021-07-31 05:19:04 字數 338 閱讀 5540

建構函式初始化時必須採用初始化列表一共有下面幾種情況:

1.需要初始化const修飾的類成員

2.需要初始化引用成員資料

const物件或引用只能初始化但是不能賦值。建構函式的函式體內只能做賦值而不是初始化,因此初始化const物件或引用的唯一機會是建構函式函式體之前的初始化列表中。

從無到有叫初始化,初始化(呼叫拷貝建構函式)建立了新物件;賦值(呼叫賦值操作符)沒有建立新物件,而是對已有的物件賦值。

3.需要初始化的資料成員是物件(存在繼承關係,繼承時呼叫基類建構函式)

原因同樣是建立物件時,要初始類成員的每乙個成員 4.

類成員為沒有預設建構函式的類型別

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

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

建構函式初始化列表

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

建構函式初始化問題

程式原始碼 include stdafx.h include include define pi 3.14 inline double sqr double x class ccircle void setradius double radiusval double getradius const ...