使用 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;
一个非常简单的想法让我想知道:在 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;