1.1、
子類中可以定義建構函式
1.2、
子類建構函式,必須
對繼承而來的成員進行
初始化
,有兩種方式
1.2.1、
直接通過
初始化列表
進行初始化或
賦值的方式
進行初始化
1.2.2、
呼叫父類建構函式
進行初始化
1.3、
父類建構函式在子類中呼叫方式
1.3.1、
預設呼叫:適用於
無參建構函式
和使用預設引數
的建構函式
1.3.2、
顯式呼叫:通過
初始化列表進行呼叫
,適用於所有父類建構函式
/************************* 子類的構造初探 **********/
#include
#include
using namespace std;
class parent
parent(string s)
};class child : public parent
//在初始化列表中顯示呼叫父類帶參的parent(string s)建構函式,如果不顯示呼叫,則會預設呼叫父類無參的parent()建構函式
child(string s) : parent(s)
};int main()
2.1、
子類物件在建立時會
首先呼叫父類的建構函式
2.2、
先執行父類建構函式,
再執行子類的建構函式
2.3、父類建構函式可以被
隱式呼叫或顯式呼叫
3.1、
先呼叫父類的建構函式
3.2、
再呼叫成員變數的建構函式(注意,
這裡的順序與成員變數宣告順序相同!
)3.3、
最後呼叫類
自身的建構函式
4.1、
先執行自身的析構函式
4.2、
再執行成員變數的析構函式
4.3、
最後執行
父類的析構函式
/**********物件的構造和析構深度解析********/
#include
#include
using namespace std;
class object
~object()
};class parent : public object
parent(string s): object(s)
~parent()
};class child : public parent
//在初始化列表中顯示呼叫父類帶參的parent(string s)建構函式,並對成員變數mo1和mo2進行初始化。
child(string s) : parent(s), mo1(s + " 1"), mo2(s + " 2")
~child()
};int main()
5.1、
子類物件在建立時需要
呼叫父類建構函式進行初始化
5.2、
先執行父類
建構函式然後
執行成員
建構函式
5.3、
父類建構函式顯式呼叫需要在初始化列表中進行(類中的const成員只能在初始化列表中使用)
5.4、
子類物件在銷毀時需要父類析構函式進行清理
5.5、
析構順序與構造順序
對稱相反
第46課 繼承中的構造與析構
本文內容來自於對狄泰學院 唐佐林老師 c 深度解析 課程的學習總結 子類物件的構造 子類中可以定義建構函式 子類建構函式 必須對繼承而來的成員進行初始化 直接通過初始化列表 或者 賦值的方式 進行初始 呼叫父類建構函式 進行初始化 父類建構函式在子類中的呼叫方式 預設呼叫 適用於無參建構函式 和 使...
46 繼承中的構造與析構
問題 如何初始化父類成員?父類建構函式和子類建構函式有什麼關係?必須對繼承而來的成員進行初始化 父類建構函式在子類中呼叫方式 父類建構函式的呼叫 class child public parent child string s parent parameter to parent 範例 子類的建構函...
繼承中的構造與析構
賦值相容性原則 子類物件可以當作父類物件使用 子類物件可以直接賦值給父類物件 子類物件可以直接初始化父類物件 父類指標可以直接指向子類物件 父類引用可以直接引用子類物件 子類是就是特殊的父類!class child public parent int main int argc,char argv ...