次のコードを検討してください。
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];
}
}
私は現在、最上位のコンストラクターを持っており、すべて正常に動作していますが、もちろん、リークが発生しているかどうかはわかりません...
個人的には、私がやっていることを考えると、2 番目のバージョンの方がはるかに論理的だと思います。とにかく、これを行う「適切な」方法は何ですか?