文章目录
构造函数的工作过程:
1、派生类的构造函数在执行函数体之前调用基类的构造函数初始化基类;
2、在执行函数体之前根据声明次序初始化自己的成员;
3、执行自身函数体。
程序示例:
#include<iostream>
using namespace std;
class AA{
public:
AA(){ cout<<"A"; }
~AA(){ cout< < "a"; }
};
class BB: public AA{
AA aa;
public:
BB(){ cout<<"B"; }
~BB(){ cout< <"b"; }}
;
int main(){
BB bb;
return 0;
}
【解析】
首先,构造函数的工作过程:1、派生类的构造函数在执行函数体之前调用基类的构造函数初始化基类;2、在执行函数体之前根据声明次序初始化自己的成员;3、执行自身函数体。所以程序中在创建BB对象时,首先调用AA的构造函数,输出“A”,然后初始化类BB中的成员a,调用AA的构造函数,输出“A”,最后执行函数体,输出“B”﹔
程序执行结束时,系统会自动调用类的析构函数,析构函数工作过程: 1、执行析构函数的函数体; 2、如果该类中拥有类对象成员,且类对象有析构函数,则以类对象成员声明次序的相反顶序调用其析构函数,销毁类对象成员;3、按原来构造顺序的相反顺序向上依次调用基类的析构函数。
所以程序运行结束时,首先调用BB的析构函数并执行函数体,输出‘“b”﹔然后调用a的析构函数,销毁a成员,输出“a”﹔最后调用基类AA的析构函数,输出“a”;综上所述,程序运行的输出是:“AABbaa”;答案为B。