C++ 当类内成员初始化是必需的时

C++ 当类内成员初始化是必需的时,c++,C++,什么时候类内成员初始化是严格强制的 类内成员初始化的规则很复杂,我们可以通过对非静态成员使用Ctor初始值设定项列表并在类外定义静态成员来避免这种情况。这也将声明和定义分离开来。如果静态常量成员在需要常量表达式的上下文中的类中使用,则它必须具有初始值设定项。比如说, struct S { static const int N = 4; int arr[N]; // okay }; const int S::N; struct T { static const int N; i

什么时候类内成员初始化是严格强制的


类内成员初始化的规则很复杂,我们可以通过对非静态成员使用Ctor初始值设定项列表并在类外定义静态成员来避免这种情况。这也将声明和定义分离开来。

如果静态常量成员在需要常量表达式的上下文中的类中使用,则它必须具有初始值设定项。比如说,

struct S {
  static const int N = 4;
  int arr[N]; // okay
};

const int S::N;

struct T {
  static const int N;
  int arr[N]; // error
};

const int T::N = 4;

当可以使用类内成员初始化时,我想不出任何不能在构造函数的初始化列表中初始化的东西。好的,谢谢。如果你愿意,你可以写一个答案。我将拭目以待,看看是否有更多的评论对这个问题。谢谢谢谢实际上,在使用C样式数组时,需要初始化类内静态常量成员。谢谢