实现的指导方针
1、异常安全
出异常后,不占有资源,也不破坏数据
- 涉及资源型语句,最好单独写成一行。因为同一行语句,执行顺序是不确定。
-
// 试想,如果执行顺序是 new A -> priority() -> shared_ptr
// 如果priority()执行中出现异常,那么new A执行后的资源将无法释放
dealSth( std::tr1::shared_ptr<A>(new A), priority() )
2、线程安全
考虑多线程任意顺序执行,执行结果要求一致
3、封装性
不返回指向对象内部元素的指针
4、效率
- 推迟变量初始化