背景介绍:
RAll机制
定义一个类来封装资源的分配和释放,在构造函数中完成资源的分配和初始化,在析构函数中完成资源的清理,从而保证资源的正确初始化和清理
ps:智能指针就是RAll机制的一种应用,智能指针从根本上来说是一个对象
1.auto_ptr是什么?
auto_ptr是C++标准库提供的类模板,auto_ptr对象通过初始化指向由new创建的动态内存,它是这块内存的拥有者,一块内存不能同时被分配给两个拥有者,当auto_ptr对象生命周期结束时,其析构函数会将auto_ptr对象拥有的动态内存自动释放,即使发生异常,通过异常栈的展开过程也能将动态内存释放,auto_ptr不支持new 数组
ps:头文件:#include<memory>
2.初始化auto_ptr的方法
1)构造函数
将已存在的指向动态内存的普通指针作为参数来构造
int *p=new int(33); auto_ptr<int> aptr(p);
直接构造
auto_ptr<int> aptr(new int(33));
2)拷贝构造
利用已经存在的智能指针来构造新的智能指针
auto_ptr<string> p1(new string(