可能重复:
Why does my destructor appear to be called more often than the constructor?C++静态计数器不增加正常
我有一个static sCounter
和int id
有ID的订购我的实例。
当在矢量将它们分组,这工作正常.. ID是corrrectly设置好的:
Task t("1st Task");
Task t2("2nd Task");
Task t3("3rd Task");
std::vector<Task> myTasks;
myTasks.push_back(t);
myTasks.push_back(t2);
myTasks.push_back(t3);
任务数之一具有ID为0,第二个:ID 1和第三一个ID 2. 然而如果我这样做:
std::vector<Task> myTasks;
myTasks.push_back(
Task("First Task"));
myTasks.push_back(
Task("Second Task"));
myTasks.push_back(
Task("Third Task"));
静态SCOUNT值开始给奇怪的结果:
第一个获得ID 1,第二个也ID 1,第三个获得ID 0。
为什么用静态计数器创建像这样的对象?
的sCounter大干快上的构造增加,并在析构函数减少:
int Task::sCount = 0;
Task::Task(std::string text) {
this->setText(text);
this->setStatus(1);
time_t now = time(0);
timestamp = *localtime(&now);
std::cout << "Count from " << sCount;
sCount++;
std::cout << " to --> " << sCount << "\n";
this->setID(); // set the current sCount to ID
}
Task::~Task() {
--sCount;
}
sCounter是一个私有静态诠释:static int sCount;
你可以添加'Task'的代码吗? – Collin
我想我们需要看到静态计数器代码以及如何调用这个代码以在此处取得进展。 – Julian
'sCounter'增加了多少?这里没有足够的信息来回答这个问题。 – Justicle