【发布时间】:2011-07-06 04:55:15
【问题描述】:
我有以下 catch 子句:
catch(Widget w);
catch(Widget& w);
void passAndThrowWidget() {
Widget localWidget;
throw localWidget;
}
如果我们按值捕获 Widget 对象,编译器将进行复制,因此当我们抛出异常时,localWidget 超出范围,我们看不到任何问题。
如果我们通过引用捕获widget对象,根据引用概念,“w”指向同一个本地Widget而不是副本。但是我已经看到大多数异常都被 C++ 中的引用捕获。我的问题是,当抛出异常并通过引用指向被破坏的对象时,当“localWidget”超出范围时,它是如何工作的。
谢谢!
【问题讨论】:
标签: c++