首頁 > 後端開發 > C++ > 為什麼我不能將臨時物件傳遞給 C 中的非常量參考?

為什麼我不能將臨時物件傳遞給 C 中的非常量參考?

Susan Sarandon
發布: 2024-12-11 15:02:11
原創
776 人瀏覽過

Why Can't I Pass Temporary Objects to Non-Const References in C  ?

為什麼 C 中的臨時物件只允許使用 const 引用?

在 C 中,臨時物件的賦值只允許給 const 引用,同時禁止非常量引用。這種限制引發了許多問題,特別是關於修改臨時物件的可能性的問題。

眾所周知,臨時物件是短暫的,一旦包含其建立的語句結束,它們就會消失。這引起了一個合理的擔憂:為什麼在允許讀取的同時限制修改?

要理解這種差異,請考慮涉及函數參數的假設情況:

void inc(double& x)
{ x += 0.1; }

int i = 0;
inc(i);
登入後複製

如果非常量引用允許臨時參數,則該程式碼的行為將是特殊的。儘管透過引用傳遞 int 參數,但呼叫 inc 後 i 的值保持不變。這會導致意外和不合邏輯的結果。

但是,允許 const 引用可以保證傳遞給函數參數的臨時物件不會被意外修改。這可以防止出現意外行為的可能性,並確保維護使用 const 引用的意圖。

以上是為什麼我不能將臨時物件傳遞給 C 中的非常量參考?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板