我有一个班级:A
我编写了析构函数。
现在我有一个班级B
:
class B {
A* a;
public:
B() {
a = new A[10];
}
~B() {
}
};
我想实现B的析构函数。
我认为:
~B() {
delete[] a;
}
但是我收到了一个错误。
也许我必须做下一行?
delete a;
任何帮助表示赞赏!
答案 0 :(得分:4)
你没有说出你得到了什么错误,但是下面的编译没有错误:
class A {};
class B {
A* a;
public:
B() {
a = new A[10];
}
~B() {
delete[] a;
}
};
请注意,这不完整,因为它违反了Rule of Three。 B::a
应该是合适的智能指针,或者类需要实现复制构造函数和复制赋值运算符(或disable both)。更好的选择是使用std::vector
或std::array
而不是原始指针。