问题
单项选择题
有如下程序:
class Base1
public:
int a;
void b() return;
void c(float) a=float;
;
class Base2
public:
void b()
void c()
private:
int a;
;
class Derived:public Basel,public Base2
public:
void b()
;
void main()
Derived obj;
obj.a=1; //①
obj.b();//②
obj.c(10);//③
下面各项对语句①②⑧的描述中,正确的是( )。
A.语句①②③都有二义性
B.语句①③有二义性,②没有二义性
C.语句①有二义性,②③没有二义性
D.语句①②有二义性,③没有二义性
答案
参考答案:B
解析: C++中二义性问题的检查在访问控制权限或类型检查之前进行,即访问权限的不同或类型不同不能解决二义性问题。所以语句①⑧有二义性。由于Derived中又重新定义了同名成员函数b(),所以b()函数的调用就不存在二义性问题。