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

admin2013-05-30  56

问题  有如下程序:    #include<iostream>    using namespace std;    class Base    {    private:      char c;    piblic:      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://kaotiyun.com/show/LHNp777K
0

最新回复(0)