1. vim配置教程:链接
#include <iostream>
template<typename T>
struct ListNode
{
T _value;
std::shared_ptr<ListNode> _prev;
std::shared_ptr<ListNode> _next;
ListNode(const T & value)
:_value(value)
, _prev(NULL)
, _next(NULL)
{}
~ListNode()
{
std::cout << "~ListNode()" << std::endl;
}
};
int main()
{
std::shared_ptr<ListNode<int>> sp1(new ListNode<int>(10));
std::shared_ptr<ListNode<int>> sp2(new ListNode<int>(20));
sp1->_next = sp2;
sp2->_prev = sp1;
//构成死锁,出了函数作用域,也没有调用析构函数
std::cout << sp1.use_count() << std::endl; //sp1的引用计数
std::cout << sp2.use_count() << std::endl; //sp2的引用计数
system("pause");
return 0;
}