首页 > 试题广场 >

有以下类定义 using namespace std; cl

[单选题]
有以下类定义
using namespace std;
class B1{
int b1;
public:
B1(int i){b1=i; cout<<b1; }
~B1( ){ cout<<"#1"; }
};
class B2 {
int b2;
public:
B2( ){b2=0; cout<<"*2"; }
~B2( ){ cout<<"#2"; }
};
class C: virtual public B1,public B2 {
int j;
public:
C(int a,int b,int c):B1(a),_______ ,j(c){cout<<"*3";}
~C( ){ cout<<"#3"; }
private:
B1 c1;
B2 c2;};
请为横线处选择合适的程序将派生类C的构造函数补充完整(      )
  • B1(b)
  • c1(b)
  • c2(b)
  • B2(b)
答案是B,简单解释一下为什么不选另外三个:
A选项中的B1(b):基类B1已经在B1(a)中显式初始化过了,不能再次初始化
C选项中的c2(b):成员变量c2是类B2的对象,而类B2并没有参数列表相匹配的构造函数
D选项中的B2(b):基类B2没有参数列表相匹配的构造函数
发表于 2019-08-17 16:49:30 回复(0)