1. 程式人生 > >[C++]多個物件構造、析構、構造和析構的順序

[C++]多個物件構造、析構、構造和析構的順序

#include <iostream>//多個物件構造和析構//1)當類中有成員變數是其它類的物件時,首先呼叫成員變數的建構函式,呼叫順序與宣告順序相同;//之後呼叫自身類的建構函式//2)解構函式的呼叫順序與對應的建構函式呼叫順序相反////2、類成員中若有const修飾,必須在物件初始化的時候,給const int n 賦值//當類成員中含有一個const物件時,或者是一個引用時,他們也必須要通過成員初始化列表進行初始化//2)C++中提供初始化列表對成員變數進行初始化//語法規則//Constructor::Contructor() : m1(v1), m2(v1,v2), m3(v3)//{//    // some other assignment operation//}//3)注意概念//初始化:被初始化的物件正在建立//賦值:被賦值的物件已經存在////4)注意://成員變數的初始化順序與宣告的順序相關,與在初始化列表中的順序無關//初始化列表先於建構函式的函式體執行using namespace std;class Parent{public:Parent(int ma, int mb){a = ma;b = mb;cout << "a: " << a << " b: " << b << " Parent"<< endl;}~Parent(){cout << "Parent析構了..." << endl;getchar();//測試}private:int a;int b;};class child{public:child():p1(1,2), p2(3,4),n(10){cout << "child..." << endl;}~child(){cout << "child析構了..." << endl;getchar();//測試}private:Parent p1;Parent p2;const int n;};int main(){child ch;getchar();return 0;}