相关疑难解决方法(0)

为什么我不能在类中初始化非const静态成员或静态数组?

为什么我不能在类中初始化非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 const

93
推荐指数
3
解决办法
9万
查看次数

静态数据成员的类内初始化

在C++中,static成员可能不会在类体中初始化,但有以下例外:

  • static的成员const整体式可以
  • staticconstexpr文字类型的成员必须

你能解释为什么这些例外吗?

此外,这有:

即使const static数据成员在类体中初始化,该成员通常也应该在类定义之外定义.

我根本就没理解过.这个额外定义有什么意义?

试图在这里获得一些直觉.

c++ c++11

14
推荐指数
1
解决办法
1万
查看次数

标签 统计

c++ ×2

c++11 ×1

const ×1

static ×1