派生关系中的重名成员的处理(二义性问题)
来源:互联网 发布:软件时间校正 编辑:程序博客网 时间:2024/05/23 16:26
前面我们介绍了派生与继承关系,它们把不同的类联系在了一起,很容易就产生了一个重名成员的处理问题,我们称之为“派生关系中的二义性问题”。下面分几种情形来介绍:
1.基类与派生类间重名成员的处理
规则:重名成员不加类名限定默认是派生类成员;要访问基类重名成员则要采用类名限定的方法。
2.多重继承情况下基类重名成员的处理
规则:重名成员不加类名限定默认是派生类成员;要访问基类重名成员则要采用类名限定的方法。(同上)
3.多级混合继承(非虚拟继承)情况下“爷爷类”重名成员的处理
规则:重名成员不加类名限定默认是派生类成员;要访问基类重名成员则要采用类名限定的方法。(同上)
对最底层的派生类而言,如果父类和“爷爷类”都有同名成员,访问“爷爷类”会出现一些错误,详见多级继承中同名成员的访问。因此这里我们只讨论简单的情况,即“爷爷类”和子类有重名成员的情况。
4.多级混合继承(虚拟继承)情况下“爷爷类”只有一个,不会出现重名成员的情况,无需进行处理
方法:将“爷爷类”定义为虚基类,各派生类对象共享其同一个“爷爷”。这种继承称为共享继承。
class A{...};class B: virtual public A{...};class C: virtual public A{...};class D: public B, public C{...};
1 0
- 派生关系中的重名成员的处理(二义性问题)
- 派生关系中的二义性处理
- Java中父类子类成员变量重名的处理
- Cookie重名问题处理
- C++中enum枚举类型成员重名问题的解决方法
- c++模板类派生:派生类访问基类中的public 和protected成员的一些问题
- C++中enum枚举类型成员重名问题的解决方法 - Enum枚举类型的类封装(转)
- C++中enum枚举类型成员重名问题的解决方法 - Enum枚举类型的类封装(转)
- 派生类中的静态成员
- java中解决构造函数中成员变量和形参重名的问题
- 多接口实现类中重名二义性冲突的处理
- 派生类初始化基类成员时的特殊问题
- 关于派生类成员变量的内存问题
- 重名CSS定义的问题
- 删除Target 重名的问题...
- 成员函数的形参 与 成员变量重名
- Java基础篇笔记(四) ---this的用法,解决类中的成员变量和方法中的参数重名
- c++笔记(8):类的继承、成员的重名、多继承
- Cocos2dx杂记:box2d初探
- adapter设置字体颜色
- RPC中几种通讯协议的比较
- Hadoop那些事儿(五)---Hive安装与配置
- Jquery 复选框全选、反选
- 派生关系中的重名成员的处理(二义性问题)
- Python中有用的工具(二)
- shell中的(),{}几种语法用法
- Android中有序广播的基本使用方法
- About ORACLE RAC [Preview]
- java子类、父类、构造初始化顺序
- cmder中文支持
- javaSripte-第一篇
- Kibana aggregation with missing / null fields