有如下程序: #include using namespace std; class Employee{ public: {cout<<’E’;} }; class Manager:public Em

admin2020-10-21  14

问题 有如下程序:
    #include
    using namespace std;
    class Employee{
    public:
    {cout<<’E’;}
    };
    class Manager:public Employee{
    public:
    ~Manager(){cout<<’M’;}
    };
    int main(){
    Employee*obj=new Manager;
    delete obj;
    return 0;
    }
    若运行时的输出结果是“ME”,则划线处缺失的部分是(    )。

选项 A、Employee()
B、~Employee()
C、virtual Employee()
D、virtual~Employee()

答案D

解析 由题意可知,M是调用了类Man—ager的析构函数输出的,输出M后输出E,又由于在调用派生类Manager的析构函数后,接着会调用了Em-ployee的析构函数,所以划线处缺失的必定是Employee的析构函数,且基类的析构函数需要声明为虚函数,否则将不会调用派生类的析构函数,所以答案为D选项。
转载请注明原文地址:https://kaotiyun.com/show/PVyp777K
0

最新回复(0)