A-A+

有如下程序: class Base1 { public: int a; void b() {

2022-08-06 03:05:54 问答库 阅读 175 次

问题详情

有如下程序: 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()函数的调用就不存在二义性问题。

考点:程序