考虑以下代码片段:
try{
LibObject* obj = new LibObject();
if (!obj)
return 0;
}catch(...){
return 0;
}
return 1;
我不知道LibObject的实现,因为它来自外部库。
一般来说,检查新对象实例(obj)是否为NULL有什么意义?还是支票根本没用?
新语句可以返回NULL对象而不会引发异常吗?
最佳答案
LibObject* obj = new LibObject();
在此不要使用括号。而且,如果您不想分配异常,则应使用std::nothrow
LibObject* obj = new(std::nothrow) LibObject;
if (obj == nullptr) return 0;
else return 1;
这是正确的语法。您可以在这里找到参考:
http://www.cplusplus.com/reference/new/nothrow/