我了解C++虚拟继承的基础。但是,我对于需要在复杂的类层次结构中使用virtual
关键字的确切位置感到困惑。例如,假设我有以下类(class):
A
/ \
B C
/ \ / \
D E F
\ / \ /
G H
\ /
I
如果我要确保在任何子类中没有一个类出现多次,那么哪个基类需要标记为
virtual
?他们都是?或者仅在直接从可能具有多个实例的类(即B,C,D,E和F;以及G和H(仅与基类E一起使用,而不与基类D和F))? 最佳答案
从A,B,C和E类(位于菱形顶部)继承时,必须指定virtual
继承。
class A;
class B: virtual A;
class C: virtual A;
class D: virtual B;
class E: virtual B, virtual C;
class F: virtual C;
class G: D, virtual E;
class H: virtual E, F;
class I: G, H;
关于c++ - 在复杂的多继承层次结构中, “virtual”关键字在哪里需要?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3414639/