标签:
1、异常安全
出异常后,不占有资源,也不破坏数据
// 试想,如果执行顺序是 new A -> priority() -> shared_ptr
// 如果priority()执行中出现异常,那么new A执行后的资源将无法释放
dealSth( std::tr1::shared_ptr<A>(new A), priority() )
2、线程安全
考虑多线程任意顺序执行,执行结果要求一致
3、封装性
不返回指向对象内部元素的指针
4、效率
标签:
原文地址:http://www.cnblogs.com/johnchow/p/4563796.html