#include <iostream> using namespace std; /*對象的構造順序: * 1:沒有繼承關係時: 先屬性後構造(構造函數) * 2:有繼承關係時: 先基類後子類,先屬性後構造(構造函數) * 3 : 對象析構與構造循序正好相反 */ //定義class Member:爲了檢驗類屬性和構造函數的先後順序 class MemberPerson { public: MemberPerson() { cout << "MemberPerson condtructor" << endl; } ~MemberPerson() { cout << "~MemberPerson condtructor" << endl; } }; class MemberMan { public: MemberMan() { cout << "MemberMan condtructor" << endl; } ~MemberMan() { cout << "~MemberMan condtructor" << endl; } }; class Person { private: MemberPerson value; //定義類變量:爲了檢驗類屬性和構造函數的先後順序 public: // public權限,可被派生類訪問 Person() { cout << "Person constructor" << endl; } ~Person() { cout << "~Person deconstructor" << endl; } }; class Man: public Person { //public繼承,可訪問基類public和protected權限的成員 private: MemberMan value; public: Man() { cout << "Man constructor" << endl; }; ~Man() { cout << "~Man deconstructor" << endl; }; }; int main() { Man Tom; return 0; }
output:
MemberPerson condtructor //基類屬性先構造
Person constructor //基類再構造
MemberMan condtructor //派生類屬性再構造
Man constructor //派生類再構造
~Man deconstructor //析構與構造相反
~MemberMan condtructor
~Person deconstructor
~MemberPerson condtructor