回答
編譯器可以從常量創建一個臨時對象,臨時對象允許綁定到常量引用。如果引用不是const,這將不被允許。
可憐的編譯器並沒有要求成爲本次討論的一部分。它只是按照語言規則告訴它:-( – 2014-10-16 21:20:03
@KerrekSB那麼,編譯器可以創建一個臨時表,並將其綁定到一個非const引用,但它不會那樣做,因爲語言規則告訴它不要這樣做。 ;) – 2014-10-16 21:39:30
常量左值引用可以綁定到右值。與您的文字1
一樣,Rvalues沒有持久性別名,因此如果要修改它,則無法觀察其效果,但如果您承諾不對其進行修改(即通過訪問常量參考文獻),您仍然可以擁有完全合理的代碼,這就是允許此綁定的原因。
(您也可以綁定右值到(可變)右值引用:void function(int &&)
在這種情況下,右值引用變成值的(唯一的)別名。)也是
注意如果沒有這個規則,它會不可能從返回prvalues的函數初始化變量,或者使用複製初始化:
struct T { T(int); };
T f();
T x = 1; // === "T x = T(1);", copy constructor wants to bind to prvalue
T x = f(); // ditto
T x((f())); // ditto
- 1. 如何將數組傳遞給函數模板以供參考
- 2. 將指針傳遞給參數爲參考的函數
- 3. C++:如何將參考函數傳遞給另一個函數?
- 4. 如何將參數傳遞給作爲參考傳遞的函數?
- 5. 將數組傳遞給函數參數
- 6. 參數傳遞給函數
- 7. 參數傳遞給函數
- 8. 將bash函數參數傳遞給emacs
- 9. 將參數傳遞給比較函數?
- 10. 將多個參數傳遞給函數
- 11. 將參數傳遞給JQuery函數
- 12. 將參數傳遞給函數指針
- 13. javascript/d3 - 將參數傳遞給函數
- 14. 將參數傳遞給a4j:函數
- 15. 將參數傳遞給函數
- 16. 將參數傳遞給函數?
- 17. VBScript:將參數傳遞給函數
- 18. Haskell - 將參數傳遞給map函數?
- 19. 將參數傳遞給Compose的函數?
- 20. 將參數傳遞給函數引用?
- 21. 將參數傳遞給AsyncCallback函數?
- 22. 將宏參數傳遞給宏函數
- 23. 將參數傳遞給EventListener函數
- 24. 將參數傳遞給回調函數
- 25. python Tkinter:將參數傳遞給函數
- 26. 將參數傳遞給window.onload函數
- 27. 將參數傳遞給jQuery函數
- 28. 將參數傳遞給jQuery函數
- 29. jquery - 將參數傳遞給函數
- 30. 將參數傳遞給jQuery函數
函數參數簽名中的'const'允許您這樣做。嘗試省略它,你會得到一個錯誤。 – 2014-10-16 21:13:13