【发布时间】:2020-08-10 18:22:34
【问题描述】:
这两者有什么区别:
try
{
MyClass* tmp=new MyClass;
return tmp
}
catch (...)
{
cout << "Error";
}
和
try
{
return new MyClass;
}
catch (...)
{
cout << "Error";
}
我认为如果第二个发生错误,它会立即返回而不捕获错误,对吧?
【问题讨论】:
-
假设约翰尼的猜测是正确的,拥有
tmp变量的好处是它更容易在调试器中看到。这有很多价值。对于那些担心开销的人来说,在优化的构建中,优化器非常非常擅长消除这种开销。 -
@NathanOliver 更新
-
为什么你认为第二个例子不会捕获异常?
-
@dan 当然这两段代码是相同的。有时,显而易见的事情是真实的。
-
@dan 没有区别。编译器会将
MyClass* tmp=new MyClass; return tmp转换为return new MyClass;。