子類對象的構造
子類構造函數:必須對繼承而來的成員進行初始化----直接通過初始化列表或者賦值的方式進行初始
---調用父類的構造函數進行初始化
對象創建時構造函數的調用順序:
1.調用父類的構造函數
2.調用成員變量的構造函數
3.調用自身的構造函數
先父母,後客人,在自己
子類對象的析構:
析構函數的調用順序與構造函數的順序相反
1.執行自身的析構函數
2,.執行成員變量的析構函數
3執行父類的析構函數
子類對象在創建時需要調用父類構造函數進行初始化
先執行父類構造函數然後再執行成員的構造函數
父類構造函數顯示調用需要在初始化列表中進行
子類隊形在銷燬時需要調用父類析構函數進行清理
#include <iostream>
#include <string>
using namespace std;
class Object
{
public:
Object(string s)
{
cout << "Object(string s) : " << s << endl;
}
};
class Parent : public Object
{
public:
Parent() : Object("Default")
{
cout << "Parent()" << endl;
}
Parent(string s) : Object(s)
{
cout << "Parent(string s) : " << s << endl;
}
};
class Child : public Parent
{
Object mO1;
Object mO2;
public:
Child() : mO1("Default 1"), mO2("Default 2")
{
cout << "Child()" << endl;
}
Child(string s) : Parent(s), mO1(s + " 1"), mO2(s + " 2")
{
cout << "Child(string s) : " << s << endl;
}
};
int main()
{
Child cc("cc");
return 0;
}