使用C++ new的正確姿勢

假設(shè)有上面一個類,在沒有調(diào)用set_new_handler函數(shù)接管堆內(nèi)存耗盡處理的前提下,用new關(guān)鍵字在堆上創(chuàng)建一個CppObject的實例,通常會看到這樣的代碼:
因為看多了這樣的代碼,大家就習(xí)慣了用 if (nullptr == pCppObj) 作為判斷堆內(nèi)存上創(chuàng)建一個對象失敗與否的標(biāo)準(zhǔn),缺了它就覺得渾身不自在。萬一系統(tǒng)內(nèi)存消耗殆盡,沒有new到內(nèi)存,如果不用 if (nullptr == pCppObj)防御一下,就對對象指針 pCppObj一頓操作,程序豈不是要掛機(jī)了?
if (nullptr == pCppObj) 真的有必要嗎?
回答是:真的沒必要。即使你這么做了,也不會帶來任何收益,且看下面示例。
有沒有動手試下,情況是不是屬實?難道 if (nullptr == pCppObj)防御大法對C++不管用?
其實管用的,只不過正確的姿勢如下:
水平有限,歡迎交流指正。