C++ 两个类可以同时从彼此继承吗?
我今天没有任何编码问题,但我需要一些帮助来解释一个我正在努力寻找答案的概念。问题是: 你能让X类从Y类继承吗C++ 两个类可以同时从彼此继承吗?,c++,class,C++,Class,我今天没有任何编码问题,但我需要一些帮助来解释一个我正在努力寻找答案的概念。问题是: 你能让X类从Y类继承吗 类Y同时从类X继承?解释如何使用代码 一篇评论中已经提到:(公共)继承模式是一种“是”的关系 暂时忘记C++,考虑继承的抽象概念及其模型。如果A继承自B,则A的任何实例都是AB。因此,A的所有实例集是B的所有实例的子集。如果A的所有实例都是B的实例,而B的所有实例都是A的实例,则不需要继承来建模A和B之间的关系,因为它们是完全相同的类型 C++。这: struct A : B {};
类Y同时从类X继承?解释如何使用代码 一篇评论中已经提到:(公共)继承模式是一种“是”的关系
暂时忘记C++,考虑继承的抽象概念及其模型。如果
A
继承自B
,则A
的任何实例都是AB
。因此,A
的所有实例集是B
的所有实例的子集。如果A
的所有实例都是B
的实例,而B
的所有实例都是A
的实例,则不需要继承来建模A
和B
之间的关系,因为它们是完全相同的类型
<现在> C++。这:
struct A : B {};
struct B : A {};
这是不可能的,原因有二。首先,要使
A
继承自B
必须知道B
的定义,要使B
继承自A
必须知道A
的定义。其次,A
的每个实例都包含类型为B
的子对象,每个B
都包含类型为A
和A
的子对象。。。。无限的。这是不可能的。继承是一种“是”的关系。你可以有“B是A”或“A是B”,但“A是A B是A是A是A是B是A…”怎么工作?你为什么要这样?还是这个问题只是理论上的?不是。在功能上,派生类的表示包括每个基类的表示。如果两个类相互继承,那么X的表示将包含Y的表示,Y的表示包含X的表示,“包含表示”关系将是无限递归的。这与struct
类型不能直接或间接地包含其自身的完整实例的原因是一样的——这种关系是无限递归的。@churill这是课堂讨论的一部分,我只是对答案感兴趣