用于定义公共变量静态常量整数的C++标准

C++ standard for defining public variable static const integer

本文关键字:整数 C++ 标准 常量 静态 定义 变量 用于      更新时间:2023-10-16

在c++中,在定义静态常量整数成员变量的类的头文件中,或者在cpp文件中,我应该在哪里定义它?

它符合这两种情况,如果我让定义在头文件中,如果我在cpp文件中移动定义,但哪一个是c++标准?

以下是C++标准中关于常量静态成员的完整引用:

如果非易失性常量静态数据成员是整数或枚举类型,它在类定义中的声明可以指定大括号或相等的初始值设定项,其中assignmentexpression是一个常量表达式(5.19)。静态数据文本类型的成员可以在类定义中声明为constexpr说明符;如果是,其声明应指明大括号或相等的初始值设定项,其中赋值表达式是一个常量表达式。[注:在两者中在这些情况下,成员可能出现在常量表达式中--尾注]如果成员是程序中使用的odr(3.2)和命名空间范围定义应不包含初始值设定项

因此,如果未使用常量静态成员的ODR,则不需要在类外定义它。

注意:顺便说一下,在这种情况下,const静态成员是否为公共成员并不重要。

您必须在类定义之外定义静态成员,并在那里提供initailizer。

对于标准方法,首先做一些类似的事情

在头文件中声明静态变量

class Something
{
public:
static const int s_nValue;
};

在cpp文件的顶部,像一样初始化它

const int Something::s_nValue = 1;