我有以下代碼:C++靜態成員
void Foo() {
static std::vector<int>(3);
// Vector object is constructed every function call
// The destructor of the static vector is invoked at
// this point (the debugger shows so)
// <-------------------
int a;
}
然後地方我打電話Foo
幾次爲什麼矢量對象被每個Foo()
調用構造序列
爲什麼是析構函數在static ...
聲明後調用?
更新:
我想實現的功能,一旦調用機制,我覺得寫東西像
static core::CallOnce(parameters)
其中CallOnce
是一個類的名字將是非常好的。
在我看來,寫作static core::CallOnce call_once(parameters)
看起來更糟糕,但沒關係,這是我無法做任何事情的情況。
謝謝。
爲什麼這會立即得到downvoted? – 2010-08-01 04:01:36
@邁克爾:好問題。必須找到誰保持downvoting而不留下一個怪異的評論!這是他們的目的! (哦,+1) – 2010-08-01 04:03:00
@詹姆斯你知道的機會,爲什麼會發生這種情況?爲什麼不能在構造函數中做一些工作的未命名對象是一個「正常的」靜態變量,並且不會被構造 - 破壞? – 2010-08-01 04:07:44