《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变成孤儿,从而内存泄露;

 

所以个人觉得,饭要一口一口吃,路一步一步走,别扯到蛋;

 

posted @ 2020-12-07 21:06  暮云林凌  阅读(79)  评论(0)    收藏  举报