如何解决为什么在程序结束时不调用我的析构函数?
我正在尝试了解共享指针如何工作。这是我的循环依赖示例。
我想知道为什么在程序结束时不将其称为析构函数?问题是因为它们链接在一起并且无法退出导致调用析构函数的循环吗?
这是我的代码,所以请看一下。
预先感谢
#include <iostream>
#include <memory>
#include <string>
using namespace std;
struct Node {
string name;
shared_ptr<Node> left = nullptr;
shared_ptr<Node> right = nullptr;
shared_ptr<Node> parent=nullptr;
Node(string x) : name(x) { cout << "C" << name << endl; }
~Node() { cout << "D" << name << endl; }
string toString() {
string lStr{ "<none>" },rStr{ "<none>" },pStr{ "<none>" };
if (left != nullptr) lStr = left->toString();
if (right != nullptr) rStr = right->toString();
if (parent != nullptr) pStr = parent->name;
string res;
res += "{Me:" + name + " ";
res += "Parent:" + pStr + " ";
res += "Left:" + lStr + " ";
res += "Right:" + rStr + "}";
return res;
}
};
shared_ptr<Node> foo() {
shared_ptr<Node> root = make_shared<Node>("rootname");
root->left = make_shared<Node>("leftname");
root->right = make_shared<Node>("rightname");
root->left->parent = {root};
root->right->parent ={root};
return root;
}
int main()
{
shared_ptr<Node> k = foo();
cout << k->toString() << endl;
return 0;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。