基本概念
所在库C 11模板库 #include <memory> shared_ptr<T> ptr(new T); // T 可以是 int、char、类等各种类型 GNU G 的标准库中还没有支持,需使用boost #include <boost/shared_ptr.hpp> 内存每个 shared_ptr 对象在内部指向两个内存位置
计数变化规则
ptr.use_count(); 构造方法(1)使用空参数构造函数构造 std::shared_ptr<T> ptr; 这样构造的话,ptr 的意义就相当于一个 NULL 指针。当试图在一个空指针上做类似于 *ptr 或者 ptr->xx 之类的东西的时候,会出现异常错误 std::shared_ptr<T> ptr(new T()); //引用计数加 1 (3) 使用make_shared方法 std::shared_ptr<T> p1=std::make_shared<T> (); //引用计数加 1 (4)复制构造函数 std::shared_ptr<T> ptr2(ptr1); // 这就是使用复制构造函数的方法,引用计数加 1 shared_ptr 可以当作函数的参数传递,或者当作函数的返回值返回,这个时候其实也相当于使用复制构造函数。 |
|