1
8
您必须指定
|
2
25
我玩了一个程序,可以帮助你研究复杂的虚拟基地。它打印下的类层次结构
添加足够的虚拟性。。。
但如果你把所有的基地都虚拟化了:
你得到一颗钻石 以不同的初始化顺序 : 玩得高兴! |
3
2
实际上,我会说,B和C:虚A,G和H:虚E,E:虚B和C。所有其他继承链接都可以是普通继承。不过,这个怪物要花60年才能打一个虚拟电话。 |
4
1
如果要确保层次结构中顶层类的对象(
班级
|
5
0
如果您希望每种类型的每个实例只有一个“物理”实例(只有一个A,只有一个B等等),那么每次使用继承时您只需要使用虚拟继承。 如果需要其中一个类型的单独实例,请使用普通继承。 |
6
0
编辑 :我认为A是最派生的类;) @路德的回答很酷,但又回到了最初的问题:
你需要使用
在这之前没必要
但是,如果您事先不知道另一个类是否将从基类继承,则可以添加
正如Luther所指出的,它修改了实例化顺序(并且对性能有轻微的影响),但是我认为任何依赖于构造顺序的设计从一开始就是错误的。作为一种精确性:您仍然可以保证基类在派生类的任何属性之前初始化,因此在执行派生的构造函数体之前初始化。 |
7
0
一般来说,如果可以避免虚拟类,可以用一些模板替换,或者尝试以某种方式解耦。 |