C++ 构造、析构的顺序
/*
构造时:先成员,后构造函数,然后处理父类
析构时与构造时完全相反顺序。
baseC()
base()
derivedC()
derived()
~derived()
~derivedC()
~base()
~baseC()
*/
#include <iostream>
using namespace std;
class baseC
{
public:
baseC() { cout <<"baseC()"<<endl; }
~baseC() { cout <<"~baseC()"<<endl; }
};
class derivedC
{
public:
derivedC() { cout <<"derivedC()"<<endl; }
~derivedC() { cout <<"~derivedC()"<<endl; }
};
class base
{
public:
base() { cout <<"base()"<<endl; }
~base() { cout <<"~base()"<<endl; }
class baseC c;
};
class derived: public base
{
public:
class derivedC c;
derived() { cout <<"derived()"<<endl; }
~derived() { cout <<"~derived()"<<endl; }
};
int main()
{
derived d;
return 0;
}
构造时:先成员,后构造函数,然后处理父类
析构时与构造时完全相反顺序。
baseC()
base()
derivedC()
derived()
~derived()
~derivedC()
~base()
~baseC()
*/
#include <iostream>
using namespace std;
class baseC
{
public:
baseC() { cout <<"baseC()"<<endl; }
~baseC() { cout <<"~baseC()"<<endl; }
};
class derivedC
{
public:
derivedC() { cout <<"derivedC()"<<endl; }
~derivedC() { cout <<"~derivedC()"<<endl; }
};
class base
{
public:
base() { cout <<"base()"<<endl; }
~base() { cout <<"~base()"<<endl; }
class baseC c;
};
class derived: public base
{
public:
class derivedC c;
derived() { cout <<"derived()"<<endl; }
~derived() { cout <<"~derived()"<<endl; }
};
int main()
{
derived d;
return 0;
}