C ++静态成员

时间:2010-08-01 03:55:17

标签: 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)看起来更糟糕,但没关系,这是我无法用它做任何事情的情况。

谢谢。

3 个答案:

答案 0 :(得分:12)

您的变量需要名称:

static std::vector<int> my_static_vector(3);

答案 1 :(得分:7)

你忘了给矢量一个名字,所以没有任何变量指向它,它会在创建后立即被销毁

答案 2 :(得分:4)

因为std::vector<int>(3)创建了一个未命名的临时文件,它只存在于其包含的表达式的末尾。调试器不能在与构造相同的行中显示破坏,因此它在下一行显示它。

为项目命名,并应用正常的static语义。