【发布时间】:2021-07-06 22:12:35
【问题描述】:
我很好奇这里“幕后”到底发生了什么。我正在创建一个类,其 ID 变量在调用构造函数时自动分配,具体取决于过去创建的实例数。
类:
class MyClass{
int ID;
public:
MyClass(){
static int id{1}; // Seems to be redefined every time the constructor is called.
ID = id++;
}
};
主要:
int main()
{
MyClass a; // ID = 1
MyClass b; // ID = 2
MyClass c; // ID = 3
return 0;
}
我只习惯使用在全局范围内初始化的静态成员变量(即 MyClass::staticVariable = 1),所以这种“类内”初始化让我感到困惑,因为这是真正发生的事情。
静态变量是否仅在第一次运行时定义,然后被忽略?这是任何函数和成员函数的一般行为吗?
【问题讨论】:
-
那个“谷歌热门”并不能准确解释我的困惑。我特别要求进行课堂初始化。是的,事实证明这与全局范围函数中的行为相同,但这正是我想要澄清的。
标签: c++ class constructor static-variables