父类构造函数-->按照类内声明顺序初始化各成员变量(如果是类则调用其构造函数)(构造函数初始化列表并不能改变该顺序)-->调用该类构造函数
该类析构函数-->按照类内声明顺序相反的方向析构各成员变量-->父类的析构函数
示例代码
using namespace std;
class A
{
public:
A() { cout << "A is created!" << endl; }
~A() { cout << "A is destroyed!" << endl; }
};
class B
{
public:
B() { cout << "B is created!" << endl; }
~B() { cout << "B is destroyed!" << endl; }
};
class C
{
public:
C() { cout << "C is created!" << endl; }
~C() { cout << "C is destroyed!" << endl; }
};
class D : public C
{
B b;
A a;
public:
D():a(), b() { cout << "D is created!" << endl; }
~D() { cout << "D is destroyed!" << endl; }
};
int main(int argc, char* argv[])
{
D d;
}
输出:
C is created!
B is created!
A is created!
D is created!
D is destroyed!
A is destroyed!
B is destroyed!
C is destroyed!