编程语言
首页 > 编程语言> > Effective C++ 条款17:以独立的语句将new出的对象置入智能指针

Effective C++ 条款17:以独立的语句将new出的对象置入智能指针

作者:互联网

考虑下面这段代码

// preliminary
int priority();
class Widget{};

// call function 'doSomething'
doSomething(shared_ptr<Widget>(new Widget), priority())

在执行调用语句的时候,编译器需要考虑这三个步骤

doSomething一定在最后执行。但是调用priority方法和将new出来的指针放入shared_ptr这两个,也就是(2)和(3)的步骤是不确定的。

如果在调用priority方法时出错了,程序崩溃或者抛出异常了。那么new Widget得到的指针就会成为野指针。那段内存就泄露了。

所以,以独立的语句将newed对象存储于智能指针内。

标签:Widget,调用,Effective,17,doSomething,C++,priority,new,指针
来源: https://www.cnblogs.com/destinyzk/p/14966664.html