三種情況必須在類建構函式初始化列表初始化

2021-07-25 14:57:09 字數 997 閱讀 2082

**:

關於類的建構函式,可以分為兩個部分,初始化部分(初始化列表)和計算部分(花括號間的賦值運算),在花括號作用域間進行的運算不是初始化,而是賦值。

對於必須在定義時初始化的情況在類建構函式中也是相同的

總結如下:

1、const成員:常量,不能被改變,定義的同時必須初始化

2、引用成員:&,別名,與目標共享位址,定義的同時必須初始化

3、沒有預設建構函式供系統自動呼叫:

(1)物件成員:a類的成員是b類的物件,在構造a類時需對b類的物件進行構造,當b類沒有預設建構函式時需要在a類的建構函式初始化列表中對b類物件初始化

(2)類的繼承:派生類在建構函式中要對自身成員初始化,也要對繼承過來的基類成員進行初始化,當基類沒有預設建構函式的時候,通過在派生類的建構函式初始化列表中呼叫基類的建構函式實現

下面是1、2驗證程式

#include

using namespace std;

//const成員的初始化只能在建構函式的初始化列表中進行

//引用成員的初始化也只能在建構函式的初始化列表中進行

class object

private:

int num_;

const int knum_; 

//成員變數是乙個常量,未初始化

int& refnum_; 

//成員變數是乙個引用,未初始化};

int main(void)

下面是3驗證程式

#include

using namespace std;

class base

~base()

int b_;};

class derived : public base

derived(int b, int d):base(b), d_(d) 

~derived()

int d_;};

int main(void)

來自對學習資料的整理,歡迎指正!

必須在類初始化列表中初始化的幾種情況

1.類成員為const型別 2.類成員為引用型別 include using namespace std class a void print val private const inti intp int j int main int argc char argv 究其因 const物件或引用只能...

c 必須在類初始化列表中初始化的幾種情況

1.類成員為const型別 2.類成員為引用型別 include using namespace std class a void print val private const inti const intp int j 引用 int main int argc char argv 究其因 con...

c 必須在類初始化列表中初始化的幾種情況

1.類成員為const型別 2.類成員為引用型別 include using namespace std class a void print val private const int i int p int j int main int argc char argv 究其因 const物件或引用...