int priority(); //揭示处理程序的优先权
void processWidget(std::tr1::shared_ptr<Widget> pw, int priority); // 用来在某动态分配所得的Widget上进行某些带有优先权的处理
// 这里对动态分配得来的Widget运用智能指针
// 现在考虑调用processWidget
processWidget(new Widget, priority()); // 显然编译是不通过的,原因是类型不匹配。
// 如果像下面这样调用即可
processWidget(std::tr1::shared_prt<Widget>(new Widget), priority()); // 编译通过std::tr1::shared_ptr<Widget> pw(new Widget); processWidget(pw, priority());
Effective C++(17) 以独立语句将newed对象置入智能指针
原文:http://blog.csdn.net/zs634134578/article/details/18901453