1. 概述
shared_ptr智能指针,本质是“离开作用域会自动调整(减小)引用计数,如果引用计数为0,则会调用析构函数”。这样一来,就进化成类似于int、float等的一种会被自动释放的类型。
2. 初始化智能指针
初始化一个智能指针的方式比较多,可以构造一个空的智能指针,也可以通过调用new进行初始化,最推荐的还是通过make_shared<T>来构造。
如下是几种构造方式。
(1)构造空的智能指针
shared_ptr<T> ptr;
就相当于一个 NULL 指针
(2)调用new
从new操作符的返回值构造
shared_ptr<T> ptr(new T());
(3)拷贝构造
shared_ptr<T> ptr2(ptr1);
使用拷贝构造函数的方法,会让引用计数加 1。
shared_ptr 可以当作函数的参数传递,或者当作函数的返回值返回,这个时候其实也相当于使用拷贝构造函数。
(4)使用make_shared构造
比较推荐使用make_shared辅助创建
std::shared_ptr<T>foo = std::make_shared<T>(10);


1万+

被折叠的 条评论
为什么被折叠?



