我是 C++ 新手,很好奇继承是否是处理此示例的正确方法: 该程序代表一个游戏,X 玩家可以选择他们的宇宙飞船和一些武器。类的结构如下所示:
武器 -> 飞船 -> 玩家
Weapon 代表船舶的派生基类。玩家将源自船舶。为什么要这样?因为我可以为 PlayerOne 创建一个单个对象并访问其所有船舶数据。武器对象将由 vector 动态创建。
我知道这是一个很长的问题,但你真的可以帮助我开始继承。 提前致谢!
最佳答案
在面向对象编程中,继承往往涵盖 is-a 关系。子类应该是父类(super class)的特化。
因此,在决定船舶是否应从武器派生或玩家是否应从船舶派生时,您需要问:“船舶是武器吗?”和“玩家是一艘船吗?”。我认为这两个问题的答案可能是否定的。
相反,玩家有武器,或者玩家有船,或者船有武器。最好用组合来描述关系;你的玩家类应该保存武器的实例(或武器的数据结构)以及船舶的数据结构。
您可能希望使用继承来专门化武器和行为的类型。因此,您可以拥有一个 Laserbeam 类和一个 Lightsaber 类,每个类都派生自 Weapon,并且每个类都有不同的范围属性。
关于C++具体继承示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24463741/