Doo*_*nyx 3 c++ virtual inheritance multiple-inheritance diamond-problem
我理解在从基类派生时使用virtual关键字的要求,以避免与钻石继承相关的歧义问题.
但是,我的问题是,为什么这不是C++中导出类时的默认行为,无论钻石问题是否存在或不存在?
在没有钻石继承的情况下,使用'virtual'关键字是否有"伤害"?
虚拟继承有一个运行时开销:转换指针需要一个只在运行时知道的调整,而非虚拟继承,它可以在编译时知道.它也可以使类派生更复杂,因为虚拟基类是由最终派生类初始化的,而不是(必然)直接从它们继承的类.
因此,当您特别想要钻石结构时,您只需要它; 必须记住指定非虚拟继承以避免隐藏的开销是一件痛苦的事.C++通常遵循的原则是您不应该为不需要的功能付费.
| 归档时间: |
|
| 查看次数: |
363 次 |
| 最近记录: |