首页 > 代码库 > Effective C++ 条款17 以独立语句将newed对象置入智能指针
Effective C++ 条款17 以独立语句将newed对象置入智能指针
对于函数:
int priority();
void processWidget(std::tr1:: shared_ptr<Widget> pw,int priority);
调用以上函数
processWidget(new Widget,priority());
以上调用错误,因为shared_ptr构造函数需要一个原始指针,但该构造函数是个explicit构造函数,无法进行隐式转换。
而且其调用顺序也无法确定。
所以,我们一般使用分离语句,创建Widget,然后置入只能指针中。最后再将此智能指针传给processWidget。
即:
std:: tr1:: shared_ptr<Widget> pw(new Widget);
processWidget(pw,priority()); // 这个调用动作绝不至于造成泄露。
记住:
以独立语句将newed对象存储与智能指针中。如果不这样做,一旦异常被抛出,有可能导致难以察觉的资源泄露。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。