问题 单项选择题

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

cout<<c;

;
class Derived : public Baseprivate:
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

答案

参考答案:A

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

选择题
单项选择题