我正在学习析构函数,并希望看看这是否是在外部编写它们的正确方法,而不是在类内部。
class Foo
{
private:
int* array;
int arraySize;
public:
Foo(int size) // Assume "size" is > 0
{
arraySize = size;
array = new int[size];
}
~Foo();
};
Foo::~Foo() {
delete array;
delete &arraySize;
}
答案 0 :(得分:0)
在类定义之外定义析构函数与定义类定义之外的普通函数没有区别:
return_type class_name::function_name(..)
{
...
}
除了析构函数(和构造函数)没有return_type。
顺便说一下,使用delete
的方式是错误的。您应该只delete
new
之前在Foo::~Foo() {
delete array; // should use delete [] to delete an array on heap
delete &arraySize; // don't delete an object on stack, cos it's not "newed"
}
堆上分配的对象。删除数组与删除单个元素不同,因为您需要明确指定。
{{1}}