智能指针: 所谓智能指针就是智能/⾃动化的管理指针所指向的动态资源的释放
为什么我们会有智能指针呢,我们通过下面的代码来看一下
void DoSomeThing ()
{
throw 2 ;
}
void Test2 ()
{
int* p1 = new int(2);
try
{
DoSomeThing();
}
catch(...)
{
throw;
}
delete p1 ;
}
我们下来可以尝试一下这个程序,尝试过的同学会知道这个程序在调试中没有报错,但是在运行的时候就会崩溃,那么这个是什么原因呢?
原因是我们在开辟了空间遇到了异常,throw是抛出异常,我们都知道在抛出异常后面的代码都不会继续执行,所以这里我们的错误在于没有释放空间
这里我们就要使用智能指针首先我们介绍一下
智能指针是一个模版类
它的目的:
1,管理指针指向对象的释放间隔
2,可以像指针一样用起来(这里我们会用到重载)
我们先说一下RAII
RAII(Resource Acquisition Is Initialization)
资源分配即初始化,定义⼀个类来封装资源的分配和释放,在构造函数完成资源的分配和初始化,在析构函数