一个非常简单的想法让我想知道:在课堂上使用以下内容有什么好处:
static const int maximum_hp{10};
而不是
int maximum_hp() const{return 10;};
...
据我所知,第一种方法可以更容易覆盖子类中需要的maximum_hp值(当然,通过声明虚拟);但是,无法修改静态数据成员。对于不变的原始类型,对我而言,似乎是一种更好的方法。
答案 0 :(得分:1)
静态成员给你的一件事是函数没有:如果你所显示的类定义中存在该值,它可以用作常量表达式(例如数组绑定或模板参数)。换句话说,这是合法的:
std::array<int, Class::maximum_hp_static_memer> a;
虽然不是这样:
std::array<int, c.maximum_hp_function()> a;