【发布时间】:2011-02-18 08:12:47
【问题描述】:
考虑以下代码:
class Foo
{
Monster* monsters[6];
Foo()
{
for (int i = 0; i < 6; i++)
{
monsters[i] = new Monster();
}
}
virtual ~Foo();
}
什么是正确的析构函数?
这个:
Foo::~Foo()
{
delete [] monsters;
}
或者这个:
Foo::~Foo()
{
for (int i = 0; i < 6; i++)
{
delete monsters[i];
}
}
我目前有最上面的构造函数,一切正常,但是我当然看不到它是否恰好在泄漏......
就我个人而言,考虑到我正在做的事情,我认为第二个版本更合乎逻辑。无论如何,这样做的“正确”方法是什么?
【问题讨论】:
标签: c++ arrays pointers delete-operator