有如下程序: #include #include using namespace std; class Appliance{ public: Applia

admin2015-07-22  23

问题 有如下程序:
       #include
       #include
       using namespace std;     
       class Appliance{
       public:
           Appliance(string t="A"):type(t) { }
           ~Appliance() { cout<       public:
           string type;
       };
       class TV:public Appliance{
       public:
           TV():size(0) { }
           TV(int s):Appliance("T"), size(s) { }
           ~TV() { cout<       private:
           int size;
       };
       int main(){
           TV room1,room2(41);
           return 0;
       }
运行时的输出结果是

选项 A、041
B、410
C、0A41T
D、41T0A

答案D

解析 执行派生类构造函数的顺序是:
1、调用基类构造函数,2、调用子对象构造函数,3、再执行派生类析构函数,4、执行基类的析构函数,所以本题中定义分别定义了room1,room2后,调用构造函数后没有输出,而调用析构函数的顺序依次为room2的析构函数,输出41,然后执行Appliance的析构函数输出T,然后执行room1的析构函数输出0,最后执行Appliance的析构函数输出A,所以D选项正确。
转载请注明原文地址:https://jikaoti.com/ti/pWE0FFFM
0

最新回复(0)