概述
Boost.smart_ptr库提供了六种智能指针,除了shared_ptr 和 weak_ptr 以外还包括 scoped_ptr 、scoped_array 、
shared_array 、intrusive_ptr 。他们的速度与原始指针相差无几,都是异常安全的,而且对于类型T也仅有一个要
求:类型T的析构函数不能抛出异常。
使用时包含头文件:
#include<boost/smart_ptr.hpp>
scoped_ptr
用法:
scoped_ptr 的构造函数接受一个类型为T* 的指针p,创建出一个scoped_ptr 类型对象,并在内部保存指针p。p必
须是一个new表达式动态分配的结果,或是个空指针(nullptr)。当scoped_ptr对象的生命期结束时,析构函数会
使用delete操作符自动销毁所保存的指针对象,从而正确的回收资源。
scoped_ptr同时把拷贝构造函数和赋值操作符都声明为私有的,禁止对智能指针的复制操作,也保证了它管理的指针
不能被转让所有权。
scoped_ptr重载了* 和 ->操作符,可以当普通指针使用。除此之外没有重载别的运算符,因此不能对其使用++、 --
== 、 != 等运算符。
举例
#include<boost/smart_ptr.hpp>
#include<iostream>
using namespace std;
using namespace boost;
int main()
{
scoped_ptr<string> sp(new string("hello world"));
cout<<*sp<<endl;
cout<<sp->size()<<endl;
return 0;
}
scoped_array
用法: