【发布时间】:2013-01-11 23:19:37
【问题描述】:
美国空军的 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;
我的问题如下:
- 这在语义上是否不同于仅在声明 @B1/B2 中虚拟继承,而不是在每个后续类声明中指定
virtual A? - 如果它在语义上有所不同,为什么会有人/想要/放弃它?在我看来,您绝对必须在每一层继承中都这样做是很愚蠢的,因为这会增加潜在的故障点。
【问题讨论】: