0

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

4

1 回答 1

3

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

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

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

有关最后一点的更多信息,请参见三规则

于 2013-10-28T11:20:43.600 回答