我正在用C++编写一个游戏,它有大约30个不同的角色,每个角色都略有不同.我有一个主类User,其中包含所有角色所需的所有数据.我的第一个实现只涉及30个角色的枚举和适当处理,但现在我想知道将User作为基类并且每个角色都是自己继承自User的类是否更好.
我主要担心的是,当有30多个类继承自单个基类时,多态方法调用的效率如何?我知道多态调用涉及虚拟表中的指针,但我不确定这是否意味着对整个表进行线性搜索以获得正确的方法,或者是否可以在恒定时间内完成.
如果有人可以用多个继承的类来评论多态方法调用的效率,我会很感激启发.
提前致谢!
而不是使用继承,使用组合.只需为"用户"类提供一个扮演角色的对象即可.所以你最终可能会有30个"角色"课程.但是他们没有继承'User',而是被赋予'User'使用(他们可以继承他们自己的基本抽象类来定义'Role'的接口)
或者如果它只是一个函数....你可能只是将它建模为一堆函数对象,然后将它们传递给User.
费用是可以忽略的.无论你有多少类,或者有多少级别的继承,多态调用的成本都是一个简单的加法 - 指向vftable加上特定函数的偏移量的指针(不是标准强制的,但在大多数情况下,如果并非所有,实现这是正确的).