提问者:小点点

枚举成员还是静态int成员?


当我们实现static int成员时,我通常这样做

class A {
  public:
  static int a = 5;
};

但是,当我找到下面的代码时,我注意到我们可以通过a::a访问成员。 我更喜欢这样做,因为不需要在main函数之前进行初始化,而不需要静态int

class A {
  public:
    enum { a = 5 };
};
    

哪一个比较好? 使用静态int有什么好处吗?


共2个答案

匿名用户

使用静态int有什么好处吗?

是的,在某些情况下,您需要更改同一个类的所有实例的变量值。 如果不使用statice,这是不可能的。

只为对象的所有可变数目的实例创建静态变量的一个副本& 请注意,它们只能由静态成员函数访问,也就是说,如果更改类代码中某个静态变量的值,则指定类的每个对象都将更改该值。

匿名用户

在C++11之前,第二种方法是向类中注入编译时可求值常量的常用方法。 它尤其在模板元编程中有它的用途。 它还使您不必在一个翻译单元中为成员保留存储空间。

从C++17开始,

static inline int a = 5;

是首选。