我有一个适用于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循环中再次创建该类的析构函数?
答案 0 :(得分:3)
每次在for循环中再次创建该类的析构函数?
是的,变量具有自动存储功能,因此每当其中一个变量超出范围时,就会调用A
的析构函数。
如果您的课程表现良好,A
中分配的内存应该得到适当处理。请注意,这意味着在您的情况下,A
也应该有一个合适的复制构造函数和一个复制赋值运算符,以便表现良好。
有关最后一点的更多信息,请参阅the rule of three。