有如下程序: #include #include using namespace std; class Person{ public: Person(string

admin2015-07-22  14

问题 有如下程序:
       #include
       #include
       using namespace std;
       class Person{
       public:
           Person(string n):name(n) { }
           ~Person() { cout<<’P’; }
       private:
           string name;
       };
       class Date{
       public:
           Date(int y=2012,int m=12,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,int y,int m,int d,char c)
:birthday(y,m,d),sex(c),Person(n) { }
           ~Student() { cout<<’S’; }
       private:
           Date birthday;
           char sex;
       };
       int main(){
           Student stu1("Zhang",1990,10,1,’F’);
           return 0;
       }
运行时的输出结果是

选项 A、S
B、SP
C、SPD
D、SDP

答案D

解析 本题考查派生类的析构函数,派生类的析构函数执行顺序为先构造的后析构,后构造的先析构,所以执行Student stu1("Zhang",1990,10,1,’F’);时,依次执行person、Date 、Student构造函数,然后依次执行Student、Date 、person的析构函数,所以输出为SDP,D选项正确。
转载请注明原文地址:https://kaotiyun.com/show/8jNp777K
0

最新回复(0)