類的初始化(建構函式)

2021-06-28 18:03:55 字數 1212 閱讀 3241

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)

類建構函式初始化列表

表現形式有三種 當前類進行初始化,尤其是當成員變數是乙個const或者乙個引用型別 class demo 需要在初始化列表中呼叫外部類成員的初始化函式 include using namespace std classc1 classc2 intmain 最後列印的結果是 class 1 const...

c 子類建構函式初始化及父類構造初始化

我們知道,構造方法是用來初始化類物件的。如果在類中沒有顯式地宣告建構函式,那麼編譯器會自動建立乙個預設的建構函式 並且這個預設的建構函式僅僅在沒有顯式地宣告建構函式的情況下才會被建立建立。1.父類沒有宣告建構函式 1 子類也沒有宣告自己的建構函式,則父類和子類均由編譯器生成預設的建構函式。2 子類中...

建構函式的初始化

一般成員變數的初始化有兩種方式 1 在建構函式體內進行賦值操作 class abc abc abc const std string name,const std string addres,const std list phones 這裡每個成員都是直接賦值操作,因為初值已經有預設建構函式完成了。...