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

2021-07-23 14:36:25 字數 1122 閱讀 7710

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

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

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

#include using

namespace

std;

class

base

private

:

intval;

};class a

void print_val()

private

:

intp;

base b;

};int main(int argc ,char **argv)

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

4. 如果類存在繼承關係,派生類必須在其初始化列表中呼叫基類的建構函式

#include using

namespace

std;

class

base

private

:

intval;

};class a : public

base

void print_val()

private

:

intp;

};int main(int argc ,char **argv)

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物件或引用...

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

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物件或引用只能...