1避免使用匿名临时的shared_ptr<T>对象
例如:void f(shared_ptr<T>,int);
int g();
void ok()
{
shared_ptr<T> p(new int(2));
f(p,g());
}
void bad()
{
f(shared_ptr<T> p(new int(2)),g());
}
void bad()函数可能会发生内存泄漏,当先执行new int(2)在堆上创建个对象,再执行g()函数时抛出异常,则堆上的对象还没有被智能指针管理而发生内存泄漏。void ok()函数就不会这样