选择题   有如下程序:
#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
【答案解析】在C++中,由于析构函数不能被继承,因此在执行派生类的析构函数时,基类的析构函数也将被调用。执行顺序是先执行派生类的析构函数,再执行基类的析构函数,其顺序与执行构造函数的顺序正好相反。在此题的程序中,在主函数main结束时,派生类Derived对象obj将被删除,所以就会调用对象的析构函数。先调用派生类的析构函数,输出x,然后调用基类的析构函数,输出y。