在C+中,什么是虚拟基类?我想知道什么是“虚拟基类“是什么意思?让我举一个例子:class Foo{public:
void DoSomething() { /* ... */ }};class Bar : public virtual Foo{public:
void DoSpecific() { /* ... */ }};
3 回答
![?](http://img1.sycdn.imooc.com/54585094000184e602200220-100-100.jpg)
墨色风雨
TA贡献1853条经验 获得超6个赞
关于内存布局
A / \ B C \ / D
A A| |B C \ / D
D::foo()
A
class A{ public : foo() ; int m_iValue ;} ;
m_iValue
D
m_iValue
B::m_iValue
A::m_iValue
B
), C::m_iValue
A::m_iValue
C
).
foo()
m_iValue
.
什么会出错?
A
有一些基本特征。 B
添加某种酷的数据数组(例如) C
添加一些很酷的特性,比如观察者模式(例如, m_iValue
).D
继承自 B
和 C
,因此 A
.
m_iValue
D
m_iValues
D
m_iValue
D
D
C
B
m_iValue
...
m_iValue
C
C
B
结语
没有找到匹配的内容?试试慕课网站内搜索吧
- 3 回答
- 0 关注
- 530 浏览
添加回答
举报
0/150
提交
取消