16-2智能指针模板类

智能指针模板类

智能指针是一个类,因此可以在其中定义析构函数,以保证在对象过期时自动调用析构函数(析构函数中释放了空间),以防空间泄露。

空间可能会泄露的几个原因:1.没有delete 2.异常跳出函数,delete被跳过了

以下为三种智能指针

auto_ptr;	//C++98
unique_ptr; //C++11
shared_ptr; //C++11

16.2.1使用智能指针

创建需要包含memory头文件。

智能指针的模板定义如下

template<class X>
class auto_ptr{
public:
explicit auto_ptr(X* p = 0) throw();
...
};
使用
auto_ptr<double> pd(new double);
auto_ptr<string> ps(new string);
unique_ptr<double> pdu(new double);
shared_ptr<string> pss(new string);

注意:使用智能指针之后就无需使用delete删除