可能重複:
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