有如下程序: #include using namespace std; class Base{ public: Base(){ cout

admin2015-07-22  31

问题 有如下程序:
     #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;
     }
运行这个程序的输出是

选项 A、BDbd
B、BDdb
C、DBbd
D、DBdb

答案B

解析 派生类构造函数在构造派生类过程中,首先初始化基类,然后根据声明次序初始化派生类的成员,最后执行函数体;析构函数在程序结束时负责撤销自己的成员,首先运行派生类析构函数,然后按继承层次依次向上调用各基类析构函数;在main函数中,创建Derived类对象obj,此时调用Derived的构造函数,构造函数在进入函数体之前,又调用基类Base的构造函数构造基类,由于Derived中没有数据成员,所以构造完基类,执行函数体,输出为:"BD";撤销obj对象时,首先执行Derived的析构函数,然后调用基类的析构函数,输出为"db";答案为B。
转载请注明原文地址:https://jikaoti.com/ti/0PE0FFFM
0

最新回复(0)