在C++中,当按值抛出对象时,例如:throw Exception(),这将创建临时对象,如何通过引用捕获它?我知道它可以工作,但是如果它是一个函数返回值或函数调用,则在不将const添加到type的情况下会失败,有什么区别?
最佳答案
首先,当你写
throw Exception();
实际抛出的不是prvalue表达式
Exception()
创建的临时对象。从概念上讲,有一个单独的对象-异常对象-是从该临时对象初始化的,并且它实际上是抛出的异常对象。 (不过,允许编译器取消复制/移动。)其次,语言规则说,异常对象始终被视为左值。因此,允许绑定(bind)到非常量左值引用。
关于c++ - 按值抛出的c++异常按引用捕获,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28932115/