20180315 代码错题(7)

下面程序的运行结果为(        )
#include <iostream>
using namespace std;
class A{
public:A(){cout<<"1";}
~A(){cout<<"2";1}
};
class B:public A{
public:B(){cout<<"3";}
~B(){cout<<"4";}
};
void main(){B b;}
 
1234
1324
1342
3142

答案 C
实例化子类对象构造函数调用顺序:父类,成员对象,子类;
析构顺序:子类,成员对象,父类
 
在C++中:
     (1)对于构造函数,先调用基类的构造函数,再调用派生类的构造函数,就像盖楼房一样,从地基开始,一层两层往上盖。。。
     (2)对于析构函数,先是调用派生类的析构函数,再调用基类的析构函数,就像拆楼房一样,从上面开始拆。。。
    注:先构造的后析构。
原文地址:https://www.cnblogs.com/kxzh/p/8576259.html