选择题
有如下程序:
#include<iostream>
using namespace std;
class BASE{
public:
~BASE(){cout<<'BASE';)
};
class DERIVED:public BASE{
public:
~DERIVED(){cout<<'DERIVED';}
};
int main(){DERIVED x;return 0;}
执行后的输出结果是
。
A、
BASE
B、
DERIVED
C、
BASEDERIVED
D、
DERIVEDBASE
【正确答案】
D
【答案解析】
本题考查派生类的定义和使用。当对象被删除时,派生类的析构函数就被执行。由于析构函数不能被继承,因此在执行派生类的析构函数时,基类的析构函数也将被调用。执行顺序是先执行派生类的析构函数,再执行基类的析构函数,其顺序与执行构造函数的顺序正好相反。所以当main函数结束时,派生类DERIVED的对象x将被删除,那么派生类DERIVED的析构函数先被调用,输出DERIVED,然后调用基类的析构函数输出BASE。
提交答案
关闭