对于构造函数 : 先执行基类的,再执行对象成员的,最后执行派生类的
对于析构函数 : 先执行派生类的,再执行对象成员的,最后执行基类的
即 析构顺序与构造顺序相反,示例程序如下:
#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