有没有一个现实世界的例子,使用了非虚拟多重继承?我想要一个主要是为了教学目的。简单地使用命名为A、B、C和D的类进行实验是完全可以的,其中B和C从A继承,而D从B和C继承。这可以用来解释问题“一个D对象应该有一个还是两个A子对象?”,但这并不能解释我们为什么需要这两个选项。许多例子都关注于为什么我们需要虚继承,但为什么我们不需要虚继承呢?
我知道什么是虚基类以及如何在代码中表达这种情况。我也知道菱形继承和具有虚基类的多重继承的例子很多。
最好的例子是车辆。基类是Vehicle,由Car和Boat继承。除其他功能外,Vehicle还具有occupants()和max_speed()。因此,同时从Car和Boat继承的Amphibian在陆地和水中继承了不同的max_speed(),这是有意义的,但它们也有不同的occupants(),这是没有意义的。所以Vehicle的子对象并不是真正独立的;这是另一个可能有趣的问题,但这不是本问题。
有没有一个现实世界的例子,使这两个子对象真正独立?
我知道什么是虚基类以及如何在代码中表达这种情况。我也知道菱形继承和具有虚基类的多重继承的例子很多。
最好的例子是车辆。基类是Vehicle,由Car和Boat继承。除其他功能外,Vehicle还具有occupants()和max_speed()。因此,同时从Car和Boat继承的Amphibian在陆地和水中继承了不同的max_speed(),这是有意义的,但它们也有不同的occupants(),这是没有意义的。所以Vehicle的子对象并不是真正独立的;这是另一个可能有趣的问题,但这不是本问题。
有没有一个现实世界的例子,使这两个子对象真正独立?
sf::Window
,sf::Sprite
,sf::VertexBuffer
和sf::Shape
,仅举几例。 - alter_igel