析构函数是外部定义的Class方法

时间:2014-04-28 00:45:56

标签: c++ external destructor

我正在学习析构函数,并希望看看这是否是在外部编写它们的正确方法,而不是在类内部。

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;
}

1 个答案:

答案 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}}