【发布时间】:2010-12-11 20:49:33
【问题描述】:
C++ 中异常对象的作用域是什么?一旦执行 catch 处理程序,它是否会超出范围?另外,如果我创建一个未命名的异常对象并抛出它,那么在捕获该异常时,我是通过 const 引用还是非 const 引用来捕获它是否重要?
【问题讨论】:
-
你问的是生命周期吗?
-
是的..什么时候销毁?
-
为了澄清 Joren 的问题:术语 范围 通常是指变量具有名称的区域(代码行)。 scope 这个词经常被误用来表示 lifetime,正如您所理解的,即变量实际驻留在内存中的时间。
-
感谢 Thomas,这也符合标准 (n4296) 3.8“对象的生命周期是运行时属性”,3.3“每个特定名称仅在调用的程序文本的某些可能不连续的部分内有效它的范围” - 因此,范围是指源代码。我从来没有想过这种区别。
标签: c++ exception-handling scope