[英]C++ static members
我有以下代码:
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)
看起来更糟,但是好吧,这是我无法对其进行任何处理的情况。
谢谢。
您的变量需要一个名称:
static std::vector<int> my_static_vector(3);
您忘了给向量起一个名字了,所以在没有指向它的任何变量的情况下,它在创建后会立即销毁。
因为std::vector<int>(3)
创建了一个未命名的临时文件,该临时文件只存在于所包含表达式的末尾。 但是,调试器无法在与构造相同的行中显示破坏,因此它将在下一行显示它。
给该项目起一个名称,然后将应用常规的static
语义。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.