我有以下代码: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