C++ Primer(第五版)第十二章 动态内存

智能指针

shared_ptr

 1.首先需要包含头文件

#include

 2.初始化:

share_ptr p1;  //默认初始化的智能指针中保存一个空指针

 3.是否为空:

p1->empty() //是否指向一个空的T类型对象 

 4.解引用
  与常规指针类似

*p1 //返回智能指针p1所指向的对象

 5.访问所指对象的数据

p1->mem   //等价于(*p1).mem

 6.返回p1中所保存的指针

p1.get() 

 7.交换p1和p2的指针

swap(p1,p2)

以下为shared_ptr独有的操作

//返回一个shared_ptr,其指向一个动态分配的T类型对象,并用arg初始化此对象
make_shared(args)
//例如,其中参数列表args必须要和string类型的某个构造函数相匹配
shared_ptr p1 = make_shared(10,'9');

//拷贝智能指针,p1是shared_ptr p2的一个拷贝,此操作将增加p2中的计数器
//p2中的指针必须能转化为T*
shared_ptrp1(p2);

//赋值操作
//两个shared_ptr,并且其中保存的指针均可以互相转换
//?递减p1的引用计数,递增p2的引用计数,若p1的引用计数为0则将其原内存释放
p1 = p2;

//返回p1与共享对象的智能指针数量
p1.use_count()

//判断p1是否只有一个共享对象的智能指针,若为1则返回true,否则false
p1.unique()

常见问题


Q:什么是智能指针的计数器?
A:



你可能感兴趣的:(C++ Primer(第五版)第十二章 动态内存)