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

admin2010-12-16  64

问题 有以下程序#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

答案A

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

最新回复(0)