问题 单项选择题

有如下程序:
#include<iostream)
using namespace std;
classBase
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) 100
B) 000
C) 010
D) 001

答案

参考答案:D

解析: 本题考查的知识点是:类的构造。建立一个类的对象时,构造函数的执行顺序如下:①执行基类的构造函数,调用顺序按照各个基类被继承时声明的顺序(自左向右);②执行成员对象的构造函数,调用顺序按照各个成员对象在类中声明的顺序(自上而下):③执行自身的构造函数。本题Derived类继承于Base类,所以首先会构造基类Base,但 Derived类的构造函数没有初始化列表,所以将调用Base类的默认构造函数,输出一个0。接下来由于它的成员中还定义了一个Base类的对象,而构造函数也没有显示初始化这个对象,所以再次调用Base类的默认构造函数输出、一个0。最后构造自身,因为主函数中传入了构造参数1,所以构造自身时输出了一个1。故最终输出结果为001。

单项选择题
单项选择题