有如下程序: class Base1 { public: int a; void b() { return}; void c(float) { a=float;} }; class Ba

admin2010-03-29  27

问题 有如下程序:    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、语句①②有二义性,③没有二义性

答案2

解析 C++中二义性问题的检查在访问控制权限或类型检查之前进行,即访问权限的不同或类型不同不能解决二义性问题。所以语句①③有二义性。由于Derived中又重新定义了同名成员函数b(),所以b()函数的调用就不存在二义性问题。
转载请注明原文地址:https://jikaoti.com/ti/5KW0FFFM
0

最新回复(0)