class example1
{
public:
example1( int i ):m_i(i)
{
}
~example1()
{
}
int getI() const
{
return m_i;
}
void setI(int i)
{
m_i = i;
}
private:
int m_i;
};
1.auto_ptr
std::auto_ptr ap(new example1(2));
if ( ap.get() )//判断是否有效
{
printf( "getI:%d", ap->getI() );//调用类对象的方法
example1* pe = ap.release();//解绑
ap.reset(pe);//重设
ap.reset();//删除,设为空
}
2.unique_ptr
控制权唯一,拷贝和赋值函数被删了
unique_ptr exam1(new example1(2));
unique_ptr exam2 = move(exam1);//exam1变空了
3.shared_ptr
shared_ptr exam1(new example1(2));
shared_ptr exam2=exam1;//共享一个,有引用计数
4.weak_ptr
协助 shared_ptr 工作,没有重载*和->,可以使用 lock 获得一个可用的 shared_ptr 对象,
use_count 返回与 shared_ptr 共享的对象的引用计数
expired 用于检测所管理的对象是否已经释放
reset 将 weak_ptr 置空
网友评论