1

所以我得到了一个对象,它有一个数组作为实例之一:

private:
  int arr[100]; //this is a fix array

当我调用对象的析构函数时,我应该写:

~MyBook(){delete []arr;} //just like I did with array pointer

还是我应该写这样的东西

~MyBook(){}

谢谢你

4

2 回答 2

4

您是否使用 分配了数组new[]?不?那就不要用了delete[]。就这么简单。分别调用delete([])未分配的东西是未定义的行为new([])

另外,如果不需要,请不要编写析构函数。在这种情况下,它不是必需的。

于 2013-01-20T23:20:43.030 回答
1

如果你只有数组,那么你不需要提供任何析构函数。编译器合成一个就可以了。即使出于其他原因确实需要析构函数,也不应尝试调用delete[]数组。您应该只对使用动态分配的数组执行此操作new[]

于 2013-01-20T23:19:51.713 回答