c通过引用按值捕获的异常

前端之家收集整理的这篇文章主要介绍了c通过引用按值捕获的异常前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在C中按值抛出对象时:抛出异常(),这将创建临时对象,如何通过引用捕获它?我知道它的工作原理,但如果它是一个函数返回值或函数调用它会失败而不添加const到类型,有什么区别?

解决方法

首先,当你写作
throw Exception();

抛出的内容实际上不是prvalue表达式Exception()创建的临时对象.从概念上讲,有一个单独的对象 – 异常对象 – 从该临时对象初始化,它是实际抛出的异常对象. (但编译器可以忽略复制/移动.)

其次,语言规则说异常对象总是被认为是左值.因此,允许绑定到非const左值引用.

猜你在找的C&C++相关文章