大佬教程收集整理的这篇文章主要介绍了c – 单个所有者和多个引用的智能指针,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
举个例子,我们来看一个二叉树:
对于初学者来说,节点应该是指针的唯一“所有者”:节点与树一起生存和死亡,所以对我来说,使它们成为unique_ptr而不是shared_ptr是有意义的:
class Tree { std::unique_ptr<Node> root_; } class Node { std::unique_ptr<Node> left_child_,right_child_; }
然后我不得不做一个这样的算法:
Node * node = root_.get(); // <-- what type should node be?? while(nodE) { if (node->left_count < node->right_count) { node = node->left_child_.get(); } else { node = node->right_child.get(); } } // do something on node
但我不喜欢使用原始指针.那么什么样的智能指针节点应该是什么?这个想法是它应该没有指针的所有权.我读到weak_ptr – 它看起来像我想要的 – 只适用于shared_ptr,但我认为这里不需要shared_ptr的开销.在任何时间点都会有一个且只有一个所有者.
沿着链表的相同行:
class LinkedList { std::unique_ptr<Node> first_; /** ?? type ?? **/ last_; } for (/*?? type ??*/ n = first_; n != last_; n = n->next) { }
编辑
我之所以不喜欢使用原始指针(超出C中不再使用它们)的原因是让我说我想将它们暴露给外部(通过接口):应该清楚它们不应该被释放.智能指针应该是这里的明智选择.
以上是大佬教程为你收集整理的c – 单个所有者和多个引用的智能指针全部内容,希望文章能够帮你解决c – 单个所有者和多个引用的智能指针所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。