美国空军的JSF C ++编码标准要求为访问虚拟基地的每个派生类声明虚拟基类。
例如,在以下层次结构中:
A
/ \
B1 B2
C1 C2
\ /
D
......他们在此标准中强加的规则(AV规则88.1,供参考),要求按类声明类:
class A;
class B1 : virtual A;
class B2 : virtual A;
class C1 : B1, virtual A;
class C2 : B2, virtual A;
class D : C1, C2, virtual A;
我的问题如下:
virtual A
?答案 0 :(得分:1)
它在语义上是相同的,因为每个派生类将具有一个类型为A
的虚拟基础。明确提到虚拟基础非常好,因为派生最多的类构造虚拟基础(与非虚拟基础不同),在编写派生类的构造函数时,构造顺序很重要。 / p>
我没有(2)的技术答案。你不必这样做,但如果你这样做会很好。我想,就像打电话给你的父母一样。与许多事情一样,C ++并没有强迫你合理。