有如下程序: #include #include using namespace std; class Person{ public: Person(string n):name(n){} ~Pers

admin2016-09-20  27

问题 有如下程序:
    #include
    #include
    using namespace std;
    class Person{
    public:
    Person(string n):name(n){}
    ~Person(){eout<<’P’;}
    private:
    string name;
    };
    class Date{
    public:
    Date(int y=2014,int m=9,int d=21):year(y),month(m),day(d){}
    ~Date(){cout<<’D’;}
    private:
    int year,month,day;
    };
    class Student:public Person{
    public:
    Student(string n,char c):Person(n),birthday(),sex(e){}
    ~Student(){cout<<’S’;}
    private:
    Date birthday;
    char sex;
    };
    int main(){
    Student stul(’’Z’’,’F’);
    return 0;
    }
    运行时的输出结果是(    )。

选项 A、SDP
B、SDS
C、SPD
D、DSP

答案A

解析 在构造对象stul时,首先调用基类Person的构造函数完成基类部分的初始化,然后根据Student类成员变量的声明次序调用Date的构造函数完成成员birthday的初始化,最后初始化成员sex的值;而释放对象stul时,各个部分的释放顺序是与构造函数调用顺序相反的,即先调用Student的析构函数,输出S,接着调用Date的析构函数,输出D,最后调用基类Person的析构函数,释放基类部分,输出P,所以输出结果为:SDP,答案为A选项。
转载请注明原文地址:https://kaotiyun.com/show/edNp777K
0

最新回复(0)