在C ++中将新对象重新分配给静态类型对象

时间:2017-08-16 16:50:53

标签: c++11

我有以下一段代码,我有一个问题。

f()
{
   static V v(10,0);//first argument is size and the second is init val for each element
    ...
    v = V(5,0);
}

当我调用V(5,0)并在第二行中将其分配给v时,先前分配的V(10,0)会自动销毁吗?或者我必须摧毁它?

由于v是静态的,对象V(5,0)是否跨函数调用保留?

1 个答案:

答案 0 :(得分:1)

  

当我调用V(5,0)并将其分配给第二行中的v时,先前分配的V(10,0)是否会自动销毁?或者我必须销毁它吗?

没有。该对象适用于应用程序的生命周期。它的状态由赋值操作改变。

当应用程序终止时,对象会自动销毁。你不必破坏它。如果你试图销毁它,你的程序将有不确定的行为。

PS 您可以使用比vV更好的名称来使代码和讨论更有意义。