C++中双斜杠//只能注释一行,在这里我没有花时间排版,所以看起来//注释换了行。把代码复制到编辑器或IDE上看可能会好很多。 weak_ptr指向一个shared_ptr管理的对象,最重要的特点就是,weak_ptr不会改变shared_ptr的引用计数。weak_ptr更详细的介绍可以参考《C++ Primer》中文版第五版第420页。此篇文章将给出《C++ Primer》上没有给出的weak_ptr的用法。 在使用shared_ptr的时候,可能会出现环形引用的问题。一旦出现了环形引用(Circular Reference),就会导致两个shared_ptr的引用计数都没办法减到1,也就没办法销毁对象,程序结束的时候就没办法正常地释放内存。下面将演示一下这种情况。 #include<memory> //shared_ptr定义在memory头文件中。 using namespace std; //我们先定义一个叫Node的类,包含两个数据成员。 struct Node{ shared_ptr<Node> previous; shared_ptr<Node> next; }; int mian() { //然后在main函数里定义两个指向Node类对象的shared_ptr并进行值初始化。 shared_ptr<Node> n1 = make_shared<Node>(); //此时n1计数器为1。 shared_ptr<Node> n2 = make_shared<Node>(); //此时n2计数器为1。 //不妨假设n1指向的对象名字为node_1,n2指向的叫node_2。 //接下来让node_1的next成员指向node_2,让node_2的prev...