假设我正在编写项目目录,其中每个项目都有唯一的ID。该id由自动增加的反静态变量确定,该变量初始化为零。我希望我的目录是一个动态数组。问题是,如果我创建一个大小为10的数组,我的静态计数器将在我创建并在此数组中放置任何对象之前增加到10。为什么会如此,我该如何避免呢?
我的示例代码:
#include <stdlib.h>
#include <iostream>
using namespace std;
class Item
{
private:
int id;
public:
static int next_id;
Item();
};
int Item::next_id = 0;
Item::Item()
{
id = Item::next_id++;
}
int main()
{
Item* catalogue;
catalogue = new Item[10];
cout << Item::next_id << endl;
system("pause");
return 0;
}
输出是:
10
正如你所看到的,我没有创建任何Item对象,但next_id已经是10.所以如果我尝试创建一个Item对象,它的id将为11。
答案 0 :(得分:3)
此处catalogue = new Item[10];
new
运算符将调用Item
类10
的构造函数,因此Item::next_id = 10