使用C++ new的正确姿势

假设有上面一个类,在没有调用set_new_handler函数接管堆内存耗尽处理的前提下,用new关键字在堆上创建一个CppObject的实例,通常会看到这样的代码:
因为看多了这样的代码,大家就习惯了用 if (nullptr == pCppObj) 作为判断堆内存上创建一个对象失败与否的标准,缺了它就觉得浑身不自在。万一系统内存消耗殆尽,没有new到内存,如果不用 if (nullptr == pCppObj)防御一下,就对对象指针 pCppObj一顿操作,程序岂不是要挂机了?
if (nullptr == pCppObj) 真的有必要吗?
回答是:真的没必要。即使你这么做了,也不会带来任何收益,且看下面示例。
有没有动手试下,情况是不是属实?难道 if (nullptr == pCppObj)防御大法对C++不管用?
其实管用的,只不过正确的姿势如下:
水平有限,欢迎交流指正。