有如下程序 #include using namespace std; class AA{ char c; public: AA(char ch):c(ch){ }

admin2021-02-22  23

问题 有如下程序
     #include
     using namespace std;
     class AA{
           char c;
     public:
         AA(char ch):c(ch){  }
         ~AA(){ cout<     };
     class BB: public AA{
         AA m;
     public:
         BB(): m(’M’),AA(’C’){  }
         ~BB(){ cout<<’m’; }
     };
     int main(){
         BB bb;
         return 0;
     }
运行这个程序的输出是

选项 A、CMm
B、MCm
C、mCM
D、mMC

答案D

解析 程序执行结束时,系统会自动调用类的析构函数清理自己的成员,析构函数工作过程如下:1、执行析构函数的函数体;2、如果该类中拥有类对象成员,且类对象有析构函数,则以类对象成员声明次序的相反顺序调用其析构函数,销毁类对象成员;3、按原来构造顺序的相反顺序向上依次调用基类的析构函数。所以程序运行结束时,首先调用BB的析构函数并执行函数体,输出"m";然后调用成员m的析构函数,销毁m成员,输出’M’,再调用基类的析构函数,输出’C’;综上所述,程序运行的输出是:"mMC";答案为D。
转载请注明原文地址:https://jikaoti.com/ti/AZh0FFFM
0

最新回复(0)