当我们实现static int
成员时,我通常这样做
class A {
public:
static int a = 5;
};
但是,当我找到下面的代码时,我注意到我们可以通过a::a
访问成员。 我更喜欢这样做,因为不需要在main函数之前进行初始化,而不需要静态int
class A {
public:
enum { a = 5 };
};
哪一个比较好? 使用静态int
有什么好处吗?
使用静态int有什么好处吗?
是的,在某些情况下,您需要更改同一个类的所有实例的变量值。 如果不使用statice
,这是不可能的。
只为对象的所有可变数目的实例创建静态变量的一个副本& 请注意,它们只能由静态成员函数访问,也就是说,如果更改类代码中某个静态变量的值,则指定类的每个对象都将更改该值。
在C++11之前,第二种方法是向类中注入编译时可求值常量的常用方法。 它尤其在模板元编程中有它的用途。 它还使您不必在一个翻译单元中为成员保留存储空间。
从C++17开始,
static inline int a = 5;
是首选。