簡體   English   中英

c ++異常通過引用按值捕獲

[英]c++ exceptions throw by value catch by reference

在C ++中按值拋出對象如:拋出異常(),這將創建臨時對象,如何通過引用捕獲它? 我知道它的工作原理,但如果它是一個函數返回值或函數調用它會失敗而不添加const到類型,有什么區別?

首先,當你寫作

throw Exception();

拋出的內容實際上不是prvalue表達式Exception()創建的臨時對象。 從概念上講,有一個單獨的對象 - 異常對象 - 從該臨時對象初始化,它是實際拋出的異常對象。 (但編譯器可以忽略復制/移動。)

其次,語言規則說異常對象總是被認為是左值。 因此,允許綁定到非const左值引用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM