首页 > 解决方案 > 立即返回新对象有什么区别?

问题描述

这两者有什么区别:

try
{
    MyClass* tmp=new MyClass;
    return tmp
}
catch (...)
{
    cout << "Error";
}

try
{
    return new MyClass;
}
catch (...)
{
    cout << "Error";
}

我认为如果在第二个错误中发生错误,它将立即返回并且不会捕获错误,对吗?

标签: c++classpointers

解决方案


他们做同样的事情。
并且(很可能)会生成完全相同的代码。

如果您使用的是交互式调试器,第一个虽然很有帮助。新建完成后,更容易检查对象(通过单击tmp(或在调试控制台中键入print tmp))并查看是否已正确初始化。

不是你经常做的事情,但它会出现。


推荐阅读