单选题 有如下程序: #include<iostream> using namespace std; class Base{ int x; public; Base{int n=0};x(n){cout<<n;} Int getX()const{return x;} }; class Derived public Base{ int y; public; Derived(int m,int n):y(rn),Base(n){cout<<m;} Derived(int m):y(m){cout<<m;} }; int main(){ Derived dl(3),d2(5,7); return 0; } 运行时的输出结果是( )。
【正确答案】 C
【答案解析】解析:此题考查的是派生类的构造与析构。建立派生类的对象时,构造函数的执行顺序如下:执行基类的构造函数,调用顺序按照各个基类被继承时声明的顺序(自左向右)->执行成员对象的构造函数,调用顺序按照各个成员对象在类中声明的顺序->执行自身的构造函数。此题中,执行语句Derived d1(3)首先调用基类的构造函数,输出0;接着调用自身的构造函数输出3。执行语句Derived d2(5,7)时,会调用基类的Base(n)函数输出7;然后执行继承类中的Derived(int m,int n)的y(m)输出5。