Cosider以下代码:
class Foo
{
Monster* monsters[6];
Foo()
{
for (int i = 0; i < 6; i++)
{
monsters[i] = new Monster();
}
}
virtual ~Foo();
}
Run Code Online (Sandbox Code Playgroud)
什么是正确的析构函数?
这个:
Foo::~Foo()
{
delete [] monsters;
}
Run Code Online (Sandbox Code Playgroud)
或这个:
Foo::~Foo()
{
for (int i = 0; i < 6; i++)
{
delete monsters[i];
}
}
Run Code Online (Sandbox Code Playgroud)
我目前有最重要的构造函数,一切都在工作,但当然我看不出它是否恰好泄漏...
就个人而言,我认为考虑到我在做什么,第二个版本更合乎逻辑.无论如何,这样做的"正确"方法是什么?
我对如何创建动态定义的数组感到困惑:
int *array = new int[n];
Run Code Online (Sandbox Code Playgroud)
我不知道这是做什么的.我可以告诉它创建一个指向数组的指针指向一个新的对象/数组int?有人会关心解释吗?