单选题
有如下程序:
#include
using namespace std;
class Base{
public:
Base(){ cout<<'B'; }
~Base(){ cout<<'b'; }
};
class Derived: public Base{
public:
Derived(){ cout<<'D'; }
~Derived(){ cout<<'d'; }
};
int main(){
Derived obj;
return 0;
}
运行这个程序的输出是
【正确答案】
B
【答案解析】解析:派生类构造函数在构造派生类过程中,首先初始化基类,然后根据声明次序初始化派生类的成员,最后执行函数体;析构函数在程序结束时负责撤销自己的成员,首先运行派生类析构函数,然后按继承层次依次向上调用各基类析构函数;在main函数中,创建Derived类对象obj,此时调用Derived的构造函数,构造函数在进入函数体之前,又调用基类Base的构造函数构造基类,由于Derived中没有数据成员,所以构造完基类,执行函数体,输出为:"BD";撤销obj对象时,首先执行Derived的析构函数,然后调用基类的析构函数,输出为"db";答案为B。