为什么我不能在类中初始化非const static成员或static数组?
class A
{
static const int a = 3;
static int b = 3;
static const int c[2] = { 1, 2 };
static int d[2] = { 1, 2 };
};
int main()
{
A a;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
编译器发出以下错误:
g++ main.cpp
main.cpp:4:17: error: ISO C++ forbids in-class initialization of non-const static member ‘b’
main.cpp:5:26: error: a brace-enclosed initializer is not allowed here before ‘{’ token
main.cpp:5:33: error: invalid in-class initialization of static data …Run Code Online (Sandbox Code Playgroud) 在C++中,static成员可能不会在类体中初始化,但有以下例外:
static的成员const整体式可以是staticconstexpr文字类型的成员必须是你能解释为什么这些例外吗?
此外,这有:
即使
const static数据成员在类体中初始化,该成员通常也应该在类定义之外定义.
我根本就没理解过.这个额外定义有什么意义?
试图在这里获得一些直觉.