繁体   English   中英

C ++静态成员

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM