使用const getter-style函数代替静态数据成员

时间:2015-05-27 17:30:23

标签: c++ static constants getter

一个非常简单的想法让我想知道:在课堂上使用以下内容有什么好处:

static const int maximum_hp{10};

而不是

int maximum_hp() const{return 10;};

...

据我所知,第一种方法可以更容易覆盖子类中需要的maximum_hp值(当然,通过声明虚拟);但是,无法修改静态数据成员。对于不变的原始类型,对我而言,似乎是一种更好的方法。

1 个答案:

答案 0 :(得分:1)

静态成员给你的一件事是函数没有:如果你所显示的类定义中存在该值,它可以用作常量表达式(例如数组绑定或模板参数)。换句话说,这是合法的:

std::array<int, Class::maximum_hp_static_memer> a;

虽然不是这样:

std::array<int, c.maximum_hp_function()> a;