C具有子类特定值的非变化成员变量
发布时间:2020-12-16 09:38:44 所属栏目:百科 来源:网络整理
导读:因此,我的类层次结构是:BaseClass(是一个抽象类)然后它有三个继承自它的子类:ArcaneWarrior,Guardian,Magi. 我想为DefaultHealth和DefaultMana提供两个特定于每个子类的非变化值,因为它们对于两个变量都具有不同的值. 我想我只是在寻找最好/最有效的方法来
因此,我的类层次结构是:BaseClass(是一个抽象类)然后它有三个继承自它的子类:ArcaneWarrior,Guardian,Magi.
我想为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; } }; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |