1. 可能会出现资源泄漏的一种用法
假设我们有一个获取进程优先权的函数,还有一个在动态分类的Widget对象上根据进程优先权进行一些操作的函数:
1 int priority();2 3 void processWidget(std::tr1::shared_ptr<Widget> pw, int priority);
注意这里使用了对象管理资源的用法(Item 13),processWidget为它需要处理的动态分配对象Widget使用了智能指针(tr1::shared_ptr)。
现在考虑对processWidget函数的调用:
1 processWidget(new Widget, priority());
这个函数调用不能通过编译,因为在tr1::shared_ptr构造函数中显示的使用了一个原生指针,而不能将“new Widget”返回的原生指针直接隐式转换为tr1::shared_ptr。下面的代码将会通过编译:
1 processWidget(std::tr1::shared_ptr<Widget>(new Widget), priority());

