问题 单项选择题

有如下程序:   #include   usingnamespacestd;   classBASE{   public:   ~BASE(){cout<<"BASE";}   };   classDERIVED:publicBASE{   public:   ~DERIVED(){cout<<"DERIVED";}   };   intmain(){DERIVEDx;return0;)   执行后的输出结果是(  )。

A.BASE

B.DERlVED

C.BASEDERIVED

D.DERlVEDBASE

答案

参考答案:D

解析:【解析】本题考查派生类的定义和使用。当对象被删除时,派生类的析构函数就被执行。由于析构函数不能被继承,因此在执行派生类的析构函数时,基类的析构函数也将被调用。执行顺序是先执行派生类的析构函数,再执行基类的析构函数,其顺序与执行构造函数的顺序正好相反。所以当main函数结束时,派生类DERIVED的对象X将被删除,那么派生类DERIVED的析构函数先被调用,输出DERIVED,然后调用基类的析构函数输出BASE。

判断题
多项选择题