有如下程序: #inc1ude<iostream> using namespace std; class Base{ int x: public; Base {int n=0}; x(n) {cout<<n,

admin2019-04-01  25

问题 有如下程序:
    #inc1ude<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(m), Base(n) {cout<<m;}
    Derived(int m): y(m) {cout<<m,}
    };
    int main(){
    Derived dl(3), d2(5,7);
    Return 0:
    }
    运行时的输出结果是(     )。

选项 A、375
B、357
C、0375
D、0357

答案C

解析 此题考查的是派生类的构造与析构。建立派生类的对象时,构造函数的执行顺序如下:执行基类的构造函数,调用顺序按照各个基类被继承时声明的顺序(自左向右).>执行成员对象的构造函数,调用顺序按照各个成员对象在类中声明的顺序一>执行自身的构造函数。此题中,执行语句Derived dl(3)首先调用基类的构造函数,输出0;接着调用自身的构造函数输出3。执行语句Derived d2(5,7)时,会调用基类的Base(n)函数输出7;然后执行继承类中的Derived (int m,int n)的y(m)输出5。
转载请注明原文地址:https://kaotiyun.com/show/eaAp777K
0

最新回复(0)