评论中已经说过:(公共)继承模型是“是”关系。
暂时忘掉 C++ 并考虑继承的抽象概念及其建模的内容。如果A继承自,B则任何实例A都是 a B。因此 的所有实例的集合是 的所有实例的A子集B。如果所有实例A都实例B的所有实例B都的情况下A,则不需要继承之间的关系进行建模A和B,因为他们是完全一样的类型。
现在又是 C++。这个:
struct A : B {};
struct B : A {};
Run Code Online (Sandbox Code Playgroud)
不可能有两个原因。首先,A从B定义中继承B必须是已知的,并且B从A定义中继承A必须是已知的。其次,每个实例A包含一个类型的子对象B,并且每个B包含一个类型的子对象A,每A....循环往复。这不可能。