我想为DefaultHealth和DefaultMana提供两个特定于每个子类的非变化值,因为它们对于两个变量都具有不同的值.
我想我只是在寻找最好/最有效的方法来做到这一点.
我应该只在基类中有两个虚函数来返回DefaultHealth和DefaultMana,而在子类中我想要的值是硬代码吗?
我很欣赏任何见解
解决方法 我的投票转到基类中的const值和受保护的构造函数:class BaseClass{ const unsigned default_health; const unsigned default_mana;protected: BaseClass(unsigned def_hp,unsigned def_mp) : default_health(def_hp),default_mana(def_mp) { }public: // your functions...};class ArcaneWarrior : public BaseClass{public: ArcaneWarrior() : BaseClass(200,50) { } // ...};
这在两个方面优于虚函数方法:
>运行时没有虚拟调度(没有开销)
>真正的常数(这些值不能改变,永远)
虚函数不会给你持久性,请看这个例子:
class BaseClass{public: virtual unsigned GetDefaultHealth() const = 0; virtual unsigned GetDefaultMana() const = 0; // ...};class ArcaneWarrior : public BaseClass{ unsigned default_health,default_mana;public: virtual unsigned GetDefaultHealth() const{ return default_health; } virtual unsigned GetDefaultHealth() const{ return default_mana; } voID SetDefaults(unsigned health,unsigned mana){ default_health = health; default_mana = mana; }};总结
以上是内存溢出为你收集整理的C具有子类特定值的非变化成员变量全部内容,希望文章能够帮你解决C具有子类特定值的非变化成员变量所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)