Phi*_*ipp 0 c++ multiple-inheritance diamond-problem
我正在使用许多抽象类,它们只定义纯虚函数和虚拟(非纯)析构函数.
没有使用虚拟继承,是否仍然可以使用钻石继承结构?(我想确保即使某些程序员不知道他应该使用虚拟继承也没有问题.)什么是一个很好的资源,它提供了一个简短而完整的主题概述?
谢谢!
MSa*_*ers 5
你不能.没有虚拟继承,继承图只是不是钻石.如果Derived继承自Left和Right,并且两者都是非虚拟派生的Base,则Base每个Derived对象将有两个子对象.
Derived
Left
Right
Base
Ele*_*tal 5
虚拟继承是获取钻石的机制 - 如果你不使用虚拟继承,那么你就可以使用两个不同的公共基类副本 - 这不再是钻石,可能不是你想要的.
归档时间:
14 年,10 月 前
查看次数:
1433 次
最近记录:
10 年,9 月 前