C++具体继承示例

标签 c++ inheritance hierarchy

我是 C++ 新手,很好奇继承是否是处理此示例的正确方法: 该程序代表一个游戏,X 玩家可以选择他们的宇宙飞船和一些武器。类的结构如下所示:

武器 -> 飞船 -> 玩家

Weapon 代表船舶的派生基类。玩家将源自船舶。为什么要这样?因为我可以为 PlayerOne 创建一个单个对象并访问其所有船舶数据。武器对象将由 vector 动态创建。

我知道这是一个很长的问题,但你真的可以帮助我开始继承。 提前致谢!

最佳答案

在面向对象编程中,继承往往涵盖 is-a 关系。子类应该是父类(super class)的特化。

因此,在决定船舶是否应从武器派生或玩家是否应从船舶派生时,您需要问:“船舶是武器吗?”和“玩家是一艘船吗?”。我认为这两个问题的答案可能是否定的。

相反,玩家有武器,或者玩家有船,或者船有武器。最好用组合来描述关系;你的玩家类应该保存武器的实例(或武器的数据结构)以及船舶的数据结构。

您可能希望使用继承来专门化武器和行为的类型。因此,您可以拥有一个 Laserbeam 类和一个 Lightsaber 类,每个类都派生自 Weapon,并且每个类都有不同的范围属性。

关于C++具体继承示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24463741/

相关文章:

c++ - 为什么 cout << 不能与重载的 * 运算符一起工作?

c++ - 从 'void *' 转换为 'const std::string *&' 必须使所有中间指针 const 合格

c++ - 为什么 Base *pd = new Derived;产生错误?

c++ - 在基类/派生类的成员函数/友元函数中Derive* to Base*转换

c++ - c++是否可以在不基于其基类的派生类中创建构造函数?

solr地理层次结构

评估模板的 C++ 模板参数(模板模板参数)

MySQL嵌套层次结构选择

python - 来自 csv python 的分层 JSON

c++ - 在 Eclipse c++ 中设置包含文件和库。还是报错