我有适用于类 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
还应该有一个合适的复制构造函数和一个复制赋值运算符,以便表现良好。
有关最后一点的更多信息,请参阅三法则。