1. 程式人生 > >默認構造函數的作用

默認構造函數的作用

定義 註意 成員 類型 def nbsp 不能 fault bsp

// 首先定義一個No_default類。

class No_default

{

public:

No_default (const string&); // 聲明了一個構造函數,但是卻沒有默認構造函數!

private:

int a;

string b;

};

// 定義第二個類,其中有一個No_default類型的成員。

class B

{

public:

No_default my_mem; // 類B也沒有構造函數!

};

B b; // 試圖定義一個B類型的對象錯誤的,因為不能為B合成默認構造函數,因為其中有No_default(沒有默認構造函數)類型的成員!

class C

{

public:

C () {} // 試圖定義C的默認構造函數是錯誤的,因為No-default類的成員c_mem沒有初始值!

private:

No_default c_mem;

};

class D

{

public:

D (): d_mem(0) {} // 定義了正確的默認構造函數,成員都有初始值(顯示地給d_mem初始化為0)!

private:

No_default d_mem;

};

註意: 在類中如果定義了其他構造函數,最好也提供一個默認構造函數!

默認構造函數的作用