struct Employee { ... };
struct Manager : virtual Employee { ... };
struct Worker : virtual Employee { ... };
struct MiddleManager : Manager, Worker { ... };书上说
虚继承就是MiddleManager类的实例中只有一个Employee类的实例这好象有点矛盾呀!!!假设Employee类有一个成员变量X
MiddleManager类的实例中肯定有Manager实例和Worker实例
由于只有一个Employee类的实例
那么Manager实例和Worker实例的成员变量X是同一个值
这好象不合逻辑呀
struct Manager : virtual Employee { ... };
struct Worker : virtual Employee { ... };
struct MiddleManager : Manager, Worker { ... };书上说
虚继承就是MiddleManager类的实例中只有一个Employee类的实例这好象有点矛盾呀!!!假设Employee类有一个成员变量X
MiddleManager类的实例中肯定有Manager实例和Worker实例
由于只有一个Employee类的实例
那么Manager实例和Worker实例的成员变量X是同一个值
这好象不合逻辑呀
解决方案 »
- C++二进制读写问题. 明明是用二进制写入.但是用记事本打开却得到字符?
- InvokeHelper谁知道它的详细用法,请给我详细讲解下,谢谢.
- 海南光信 招聘 软件设计师
- 如何得到控件的窗体句柄?
- 如果我的软件说明是写在word上面的(包括很多换行,而且篇幅比较大)怎么才能比较方便地把其粘贴到帮助对话框上面?
- 图形刷新
- [散分]严重庆祝我的母校华北工学院改名成为中北大学~!
- 装access时,怎样可以不用装office自带的那个输入法!!我觉得那个太不好用了!!
- 高手帮忙看看这个问题?
- 很菜的问题,大家谈点经验就给分。
- SDK 下如何做一个用图片代替按扭
- 在WIN32 CONSOLE APPLICATION 里如何获得FD_READ和FD_CLOSE消息呢
虚继承不影响单独存在的Manager实例和Worker实例中的Employee.即使在MiddleManager中,Manager和Worker中用户显式定义的Employee类的变量X也是独立存在的.但是,子类本身已经包含了父类的实现!!这个实现在虚继承链的终端是唯一的.
A
/ B C
\ /
D
B,C,D类变量都可以使用A类所定义的符合访问条件的变量或接口.但在D类中,设A类有个公共成员int m_Ai;那么D类的对象d中,((B)d).m_Ai和((C)d).m_Ai,以及d.m_Ai, ((A)d).m_Ai都将是同一个值.