【发布时间】:2020-11-17 23:18:31
【问题描述】:
class car
{
public:
static int i;
};
int car::i = 7;
int main ()
{
cout << car::i;
return 0;
}
一个静态变量是否因为它在类外部的定义而分配内存并在类内部声明它只是为了成为类的成员?为什么当它变为常量时我们没有在类之外定义它?
我知道静态变量在内存中的全局和静态变量段中分配,静态变量不属于任何对象。
【问题讨论】:
-
每个问题回答一个问题
-
“以及为什么当它变为常量时我们没有在类之外定义它” 这实际上是错误的。您仍然需要在声明之外初始化
static成员(除了常量整数或枚举类型)。 -
它可以在类内部使用
inline从c++17开始定义 -
The reference documentation 应该回答你所有的问题 ;)
-
@Fareanor 当它变为常量时,我们不需要在外部定义它。我们可以在里面定义它,这不会发生任何错误
标签: c++ variables static allocation