立即学习:https://edu.csdn.net/course/play/474/5161?utm_source=blogtoedu
多重继承中二义性的解决方案
问题:两个基类中数据成员名相同时,怎么处理?
例:Teacher和Student中都具有name这个数据成员,该如何处理?
解决方案:
- Teacher::name;使用域运算符来限定所调用的数据成员
二义性(1):两个基类中具有同名成员
- c.a;错误,a在两个基类中都存在
- c.A::a 加入域运算符,限定所调用的数据成员的类
二义性(2):基类和派生类具有同名成员
- 规则:同名覆盖,基类的同名成员在派生类中被屏蔽,成为不可见的
- 对成员函数来说,限于函数名和参数个数相同,类型相匹配时,才会进入二义性问题的解决;函数名相同而类型不同,属于函数重载。
- 新增加的成员直接使用.运算符进行调用。//基类的
- 基类继承的成员使用::域运算符调用
二义性(3):两个基类从同一个基类中派生
- 派生类只能访问自己的直接基类的成员