我有這個C++結構:這是否是我的Node結構的正確析構函數?
struct Node {
char symbol;
unsigned int index;
vector<Node*> next;
// Constructors
Node():symbol('$'), index(0), next(0) {}
Node(char &c, const unsigned int &ind):symbol(c), index(ind), next(0) {}
// Add a new character
Node* add(char &c, const unsigned int &num) {
Node *newChar = new Node(c, num);
next.push_back(newChar);
return newChar;
}
// Destructor
~Node() {
for (int i = 0; i < next.size(); i++)
delete next[i];
}
};
(我知道這可能會更好,使之類,但我們認爲這是因爲它是)。
我不太確定是否爲此編寫了正確的析構函數。在主函數中我使用了一個根節點:
Node *root = new Node();
是一個鏈表的一部分?如果是這樣,如果你想刪除一個節點而不是解開整個鏈表? – PaulMcKenzie
如果Node擁有所有下一個指針,並且所有這些指針都擁有它們的下一個指針,並且如果沒有別的使用任何指針指向的任何對象,那麼肯定它是正確的。 – evan
既然你可以用你的「添加」創建非循環樹,並且析構器釋放了一個節點的整個分支,這個構造應該完美的工作。 – slav