考虑以下代码:
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];
}
}
目前我有最上层的构造函数,一切都运行良好,但是当然我看不到是否会有泄漏发生...
个人认为第二个版本更加符合我的需求。无论如何,这个操作的“正确”方式是什么?