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



我有适用于类 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 循环中再次创建时都会调用该类的析构函数吗?

每次在 for 循环中再次创建时都会调用该类的析构函数吗?

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

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

有关最后一点的更多信息,请参阅三法则。

最新更新