如果某些实例不使用基类属性,我应该继承子类吗?

Ska*_*One 1 c++ inheritance attributes class

问题可能有点不清楚,所以我只提供代码:

class HitPoints {
    int m_current;
    int m_maximum;
    int m_regeneration;
};
Run Code Online (Sandbox Code Playgroud)

所以基本上current意味着你现在拥有maximum的生命值,你可以获得的最大生命值,以及regeneration你每10秒获得多少马力.

现在的事情是; 并非我游戏中的每个生物都使用它regeneration来重新生成他们的hp,有些人随着时间的推移无法再生hp.

我是不是应该设置regeneration0那些生物,或者我应该继承一个新的类:

class HitPoints {
    int m_current;
    int m_maximum;
};

class RegeneratingHitPoints : public HitPoints {
    int m_regeneration;
};
Run Code Online (Sandbox Code Playgroud)

我认为这个小例子并不重要,但是利用我学到的知识,我应该继承一个新的课程.

我的问题是,一个属性真的重要吗?为了使它成为更通用的问题,创建新类有多严格?我有时可以"屈服"一点并使用旧班,即使我应该继承一个新班吗?

Sub*_*evn 5

除非存储额外的int会成为一个问题(如果你一次在内存中有很多生物),我不会创建一个全新的类只是为了摆脱它.在我看来,如果你没有重新生成生命值,你的生命值再生为零.