C++智能指针简单剖析:http://www.cnblogs.com/lanxuezaipiao/p/4132096.html
C++中智能指针的工作原理和简单实现:http://www.cnblogs.com/yangshaoning/archive/2012/03/18/cpp_smart_pointer.html
笔记:
c++ 标准智能指针:auto_ptr 可以赋值,使得多个auto_ptr拥有同一个指针,容易造成多次delete错误, uniq_ptr 指针只能被一个左值拥有, share_ptr 带有引用计数
智能指针实现原理:
定义一个辅助类 refcounter,里面包含一个指针和一个引用计数,构造时count=1,析构函数delete这个指针
定义一个指针类 sharePtr,引用refcounter
构造函数SharePtr(T* pointer):new refcounter
赋值构造函数SharePtr(SharePtr ptr):refcounter 用同一个,counter++,
赋值operator=:左边值refcounter --,若refcounter==0,删除refcounter, 左边refcounter和右边公用同一个,且counter++
析构函数:若refcounter==0,删除refcounter