问题 单项选择题

有如下程序;
#include <iostream>
using namespace std;
class Base

public;
Base(inti)x=i;
void dispa0cout<<x<<’,’;
private;
int x;
;
class Derived;public Base

public;
Derived(int i);Base(i+10) x=i;)
void dispb()dispa();cout<<x<<end1;
private;
int x;
;
int main()

Derived b(2) ;
b.dispb();
return 0;

运行的结果是( )。

A.2,2

B.12,2

C.12,10

D.10,2

答案

参考答案:B

解析: "Derived b(2) ;¨以整数2实例化变量b,在执行Derived的构造函数时,以i+10即12去调用类Derived的父类的构造函数,将Base::x初始化为12,然后将Derived::x赋值为2。在执行b.dispb()时,先调用父类中的dispa,输出Base::x,即12,再输出Derived::x,即2,所以运行结果为“12,2”。

选择题
综合