何时适合使用继承?

inz*_*iak 3 c++ inheritance

我总是得到一个非常直接的反应,如果"如果要成为父母的子类型,则使用继承".这在我做小项目时起作用,但是当我开始研究2D游戏引擎时,我遇到了相互矛盾的情况.

假设我有一个基类GameObject,为了参数,它有50个函数和5个成员变量.这些函数包括setter,getters,动画函数,渲染,移动等.对于我的玩家和敌人来说,它是一个完美的基础.

但我也有像物品和道具这样的对象,只需要(我只希望能够访问)10个从GameObject继承的函数.我的项仍然可以定义为GameObject,但它不会移动或有任何动画.

该怎么办?我是否继承并忽略额外的功能,创造浪费的内存?我是否会重写这10个功能,浪费时间?我是否将GameObject作为Item和Prop的私有成员变量,再次浪费内存但允许我阻止访问任何不需要的函数?或者我从GameObject中删除所需的10个函数并将它们粘贴在一个单独的标题中,创建一个辅助函数库?

编辑:

谢谢你的回复.几乎每个人都说将GameObject类拆分为更好定义的基类或使用组合.

小智 7

您想要更多地细分功能

使GameObject只包含它作为游戏对象的基本要素.在您的情况下,这可能是10个关键功能.有物品,道具等直接延伸.有另一个类,比如Character,它继承了GameObject,并且拥有Enemy和Player都使用的其他40个函数.然后让玩家和敌人从角色继承