Effective C++ 第十七条 Store newed objects in smart pointer in stand

以独立语句将 newed 对象置入智能指针
在之前的学习中,我们知道智能指针的使用可以在构造的时候使用 new .
但有的时候,我们也许不仅仅是只创建一个智能指针对象,还会同时使用其他语句
在 fun 执行之前要申请资源 new int ,构造 shared_ptr 还要调用 getNum ,这个顺序又编译器决定,有可能先执行 getNum,也有可能先执行new int 、shared_ptr 的构建(new int 一定在 shared_ptr 构造函数之前)。考虑到一种情况,顺序如下
申请资源 new int
执行 getNum
构建 shared_ptr
第一步执行成功,第二步出问题,导致程序异常退出,此时尚未构建 shared_ptr,new int 申请的资源并没有相应的析构函数来释放,也就是会造成错误。也许编译器不是按这个顺序来的,但是我们要考虑到。所以保险的措施是将构建 shared_ptr 和 执行 getNum 单独执行。
这样 shared_ptr 一定会先被构建完成再调用 getNum,也就不会出现上述问题。