相关疑难解决方法(0)

链表,树等的递归析构函数是不是很糟糕?

对于我目前的学习练习,我正在研究链表和树木.我最近看到一个建议是通过让每个节点删除其子/子来递归地销毁数据结构.然而,在我发现的几乎所有示例中,节点析构函数都是空的,而某些管理类使用某种形式的迭代和删除来处理破坏.从可靠性和/或风格的角度来看,递归析构函数有什么本质上的坏处吗?

以下是我对这两种方法的理解的实现.

递归破坏:

#include <iostream>
struct Node {
  static int count;
  Node() : num_(count++), p_next_(0) {}
  ~Node() { 
    std::cout << "entering " << num_ << "\n";
    delete p_next_;
    std::cout << " leaving " << num_ << "\n";
  }
  const int num_;
  Node* p_next_;
};
int Node::count = 0;
int main () {
  Node* p_head = new Node();
  p_head->p_next_ = new Node();
  p_head->p_next_->p_next_ = new Node();
  delete p_head;
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

这是我对处理破坏的管理类的看法.假设我为Node定义了以下DTOR:

~Node() {std::cout << "Someone deleted " << num_ << …
Run Code Online (Sandbox Code Playgroud)

c++ recursion destructor coding-style

8
推荐指数
1
解决办法
3335
查看次数

标签 统计

c++ ×1

coding-style ×1

destructor ×1

recursion ×1