使用 const getter 风格的函数代替静态数据成员

Using const getter-style functions in place of static data members

一个非常简单的想法让我想知道:在 class 中使用以下内容是否有什么好处:

static const int maximum_hp{10};

而不是

int maximum_hp() const{return 10;};

...?

据我所知,第一种方法可以更轻松地覆盖 maximum_hp 的值(如果需要的话)在子 classes 中(当然通过声明它是虚拟的);但是,不能修改静态数据成员。对于常量基本类型,在我看来,这是一种更好的方法。

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

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

虽然这不是:

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