C++ 实现析构函数

C++ 实现析构函数,c++,destructor,C++,Destructor,我有一个类:a,我编写了析构函数 现在我有一个类B: class B { A* a; public: B() { a = new A[10]; } ~B() { } }; 我想实现B的析构函数 我想是这样的: ~B() { delete[] a; } 但我犯了个错误 也许我得做下一行 delete a; 感谢您的帮助 您没有说您遇到了什么错误,但以下编译没有错误: class A {}; class B { A*

我有一个类:
a
,我编写了析构函数

现在我有一个类
B

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

    ~B() {

    }

};
我想实现B的析构函数

我想是这样的:

~B() {
  delete[] a;
}
但我犯了个错误

也许我得做下一行

delete a;

感谢您的帮助

您没有说您遇到了什么错误,但以下编译没有错误:

class A {};

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

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

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

您没有说得到了什么错误,但以下编译没有错误:

class A {};

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

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

请注意,这是不完整的,因为它违反了
B::a
应该是合适的智能指针,或者类需要实现复制构造函数和复制赋值运算符(or)。更好的选择是使用
std::vector
std::array
而不是原始指针是正确的。您的错误是什么?可能您遗漏了一些相关代码?我会尽快再次检查。。谢谢大家!<代码>删除[]a是正确的。您的错误是什么?可能您遗漏了一些相关代码?我会尽快再次检查。。非常感谢。或者它应该是标准库中合适的容器类。@moooeeep:很好,谢谢。我已经更新了答案,包括这个。。。。或者它应该是标准库中合适的容器类。@moooeeep:很好,谢谢。我已经更新了答案,将其包括在内。