class parent { public: ~parent() { std::cout <<"destroying parent "; } public: children_ptr children; }; class children { public: ~children() { std::cout <<"destroying children "; } public: parent_ptr parent; }; void test() { parent_ptr father(new parent()); children_ptr son(new children); father->children = son; son->parent = father; }
在函数 test() 中,father->children = son, 使得 father 的计数器加至 2, son 同理,以至于析构 father(或son)时,仅仅是计数器减一,指针指向的资源并没有被析构。
参考
[1] http://blog.csdn.net/liuzhi1218/article/details/6993135