【发布时间】:2020-06-20 12:25:00
【问题描述】:
我从来没有见过这个:
class myclass{
static int value;
};
int myclass::value(5);
这是我在 C++ Concurrency in Action 一书中看到的代码的简短版本,但我不知道从类块中声明的静态类值是什么。
【问题讨论】:
-
这能回答你的问题吗? Undefined reference to static class member
-
不完全,在那个问题中我可以看到这是一个值的声明,但为什么括号之间是 5?
-
那么,“5”是值+声明的静态初始化?
-
static int value;是声明。int myclass::value(5);是定义。定义等价于int myclass::value = 5;。 -
这一行初始化静态成员。我认为您使用 c++17 之前的旧版本,因为使用 c++ 17。您可以在类的定义中初始化静态成员,如下所示 class myclass{ inline static int value {5}; };
标签: c++