我是否要在此类的析构函数中调用 delete ?
指向Node的2个指针:
class Node {
private:
char Ch;
int Key;
Node* L;
Node* R;
public:
Node() { L = NULL; R = NULL; }
Node(char, int, Node*, Node*);
~Node();
};
指向Node的指针:
class Example {
private:
vector<Node*> A;
public:
Node() {}
Node(vector<Node*>);
~Node();
};
在我的项目的另一个类中,我通过“new”分配节点!
答案 0 :(得分:0)
如果使用new
分配节点,则最终需要删除它们,例如vector不会为你删除它们,它只会清除向量本身但不会清除元素指向的内容(因为你有一个指针向量)。正如您所知,在您的类中建立节点的所有权可能有点棘手 - 应删除哪个类?这就是为什么使用像shared_ptr<>
和unique_ptr<>
这样的智能指针可以让您的生活更轻松。
e.g。
std::shared_ptr<Node> L;
std::shared_ptr<Node> R;
和
std::vector<std::shared_ptr<Node>> A;
然后您无需担心删除