实现析构函数

时间:2013-04-04 12:14:12

标签: c++ destructor

我有一个班级:A我编写了析构函数。

现在我有一个班级B

class B {
    A* a;
  public:
    B() {
      a = new A[10];
    }

    ~B() {

    }

};

我想实现B的析构函数。

我认为:

~B() {
  delete[] a;
}

但是我收到了一个错误。

也许我必须做下一行?

delete a;

任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:4)

你没有说出你得到了什么错误,但是下面的编译没有错误:

class A {};

class B {
    A* a;
  public:
    B() {
      a = new A[10];
    }

    ~B() {
      delete[] a;
    }
};

请注意,这不完整,因为它违反了Rule of ThreeB::a应该是合适的智能指针,或者类需要实现复制构造函数和复制赋值运算符(或disable both)。更好的选择是使用std::vectorstd::array而不是原始指针。