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:很好,谢谢。我已经更新了答案,将其包括在内。