《Effective C++》条款17:以独立语句将newed对象置入智能指针
本章节主要是声明了智能指针初始化传参的一些细节问题,本质原因还是因为C++的缺陷;
C++是真的淦,还是JAVA足够方便;
建议的步骤,如果进行新的new对象传参,一定先保证智能指针初始化,再将智能指针当作参数用于其他用处,也就是分离操作;
书上给了一个特别典型的例子:
pocesswidget(shared_ptr<Widget>(new Widget),priority());
这个例子就有典型的问题:
本质上分为三步:
1.new widget;
2.初始化shared_ptr指针;
3.调用priority();
但是对于C++的编译器,这三步如何执行不尽相同;
如果初始化指针后于调用priority,而priority出现异常,则会直接导致new widget变成孤儿,从而内存泄露;
所以个人觉得,饭要一口一口吃,路一步一步走,别扯到蛋;

浙公网安备 33010602011771号