C ++在函数中删除局部变量

时间:2013-10-28 11:15:25

标签: c++ destructor

我有一个适用于A类的函数.A类在构造函数中分配一些内存,并在析构函数A :: ~A()中释放它。

现在如果。

A someFunc()
{
//This is just to illustrate that it is possible for that variable to be overwritten few times before returning.

A locA;

for(some condition)
{
    //Something something
    A forA(i);
    //Something.
    if(end) locA = forAj;
}

return locA;
}
这是好事吗?是否每次在for循环中再次创建该类的析构函数?

1 个答案:

答案 0 :(得分:3)

  

每次在for循环中再次创建该类的析构函数?

是的,变量具有自动存储功能,因此每当其中一个变量超出范围时,就会调用A的析构函数。

如果您的课程表现良好,A中分配的内存应该得到适当处理。请注意,这意味着在您的情况下,A也应该有一个合适的复制构造函数和一个复制赋值运算符,以便表现良好。

有关最后一点的更多信息,请参阅the rule of three