有以下程序 #include<iostream> using namespace std; class Base { private: char c; public: Base(char n):c(n

admin2009-02-15  26

问题 有以下程序    #include<iostream>    using namespace std;    class Base    {    private:      char c;    public:      Base(char n):c(n){}      ~Base()    {      cout<<c;    }    };    class Derived:public Base    {    private:       char c;    public:       Derived(char n):Base(n+1),c(n){}       ~Derived()       {         cout<<c;       }     };    int main()    {      Derived obj(’x’);      return 0;     }    执行后的输出结果是

选项 A、xy
B、yx
C、x
D、y

答案1

解析 本题考核继承与派生中继承基类的数据成员与成员函数。在C++中,由于析构函数不能被继承,因此在执行派生类的析构函数时,基类的析构函数也将被调用。执行顺序是先执行派生类的析构函数,再执行基类的析构函数,其顺序与执行构造函数的顺序正好相反。在此题的程序中,在主函数main结束时,派生类Derived对象 obj将被删除,所以就会调用对象的析构函数。先调用派生类的析构函数,输出x,然后调用基类的析构函数,输出y。
转载请注明原文地址:https://jikaoti.com/ti/aFd0FFFM
0

最新回复(0)