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

admin2020-07-30  4

问题 有如下程序:
    #inc1ude<iostream>
    using namespace std;
    class Base{
    public:
    Base(int x=0){cout<<x;}
    };
    class DeriVed:public Base{
    public:
    Derived(int x=0){cout<<x;}
    private:
    Base val:
    };
    int main(){
    Derived d(1);
    return 0;
    }
    程序的输出结果是(     )。

选项 A、0
B、1
C、01
D、001

答案D

解析 此题考查的是类的构造。建立类的对象时,构造函数的执行顺序如下:执行基类的构造函数,调用顺序按照各个基类被继承时声明的顺序(自左向右).>执行成员对象的构造函数,调用顺序按照各个成员对象在类中声明的顺序.>执行自身的构造函数。本题中,首先会构造基类Base,调用Base类的构造函数,输出0;然后还定义了一个Base类的对象,再次调用Base类的默认构造函数输出0;最后构造自身,因主函数中传入了构造参数1,所以输出l。故最后输出结果是:001。
转载请注明原文地址:https://kaotiyun.com/show/qxyp777K
0

最新回复(0)