對於建構函式 : 先執行基類的,再執行對象成員的,最後執行衍生類別的
對於解構函式 : 先執行衍生類別的,再執行對象成員的,最後執行基類的
即 析構順序與構造順序相反,樣本程式如下:
#include <iostream>
#include <string>
#include <cstring>
using namespace std;
class base
{
public :
base ( )
{
cout << " constructing base class " << endl;
}
~base()
{
cout << " destructing base class " << endl;
}
};
class base2
{
int i;
public :
base2 ( int n)
{
cout << " constructing base2 class " << endl;
i = n;
}
~base2()
{
cout << " destructing base2 class " << endl;
}
void showi()
{
cout << i << endl;
}
};
class derived : public base
{
int j;
base2 obj;
public :
derived ( int n) : obj (n)
{
cout << " constructing derived class " << endl;
j = n;
}
~derived( )
{
cout << "destructing derived class " << endl;
}
void showj()
{
cout << j << endl;
}
};
int main ()
{
derived ob(10);
ob.showj ();
return EXIT_SUCCESS;
}
結果為 :
constructing base class
constructing base2 class
constructing derived class
10
destructing derived class
destructing base2 class
destructing base class
press any key to continue