一、繼承中構造函數的關系
如果父類沒有構造函數,則子類初始化時不需要構造父類
如果父類有構造函數,則子類初始化自己的構造函數時,要先初始化父類的構造函數
基類的構造函數必須在派生類的構造函數初始化列表來進行初始化
總結:在構造自己(子類)之前,需要先構造父類
演示案例
例如:下面的父類A有構造函數,則子類B在初始化構造函數時,必須要構造父類A
class A //父類{int a_data;public:A(int data) { a_data = data; }~A() {}//5};class B :public A //子類{int b_data;public:B(int data) :A(10){b_data = data;//3}~B() {}//6};
例如:下面的父類A沒有有構造函數,則子類B不需要構造父類
class A //父類{int a_data;};class B :public A //子類{int b_data;public:B(int data){b_data = data;}~B() {}};
二、若一個類中定義了另一類的構造函數關系
與繼承中構造父類的構造函數相類似:
如果類中定義的對象沒有構造函數,則該類初始化時不需要構造該對象的構造