我正在學習 C 中的參考。所以我正在嘗試不同的例子來更好地理解這個概念。下面給出了一個我無法理解的示例:
double val = 4.55;
const int &ref = val;
std::cout << ref <<std::endl; //prints 4 instead of 4.55
我想知道問題是什么,我該如何解決?
uj5u.com熱心網友回復:
問題是該參考被系結到一個具有 valueref的臨時物件型別。這將在下面更詳細地解釋。int4
當你寫道:
const int &ref = val;
int創建一個帶有值的臨時型別,4然后將參考ref系結到這個臨時int物件,而不是直接系結到變數val。val發生這種情況是因為右側變數的型別是double在左側你有一個參考int。但是對于系結對變數的參考,型別應該匹配。
為了解決這個問題,你應該寫:
const double &ref = val; //note int changed to double on the left hand side
上述陳述句的意思ref是對 const 的參考double。這意味著我們不能val使用更改變數ref。
如果您希望能夠更改val使用,ref那么您可以簡單地撰寫:
double &ref = val;
uj5u.com熱心網友回復:
const int &ref = val;
在這里,您將 ref 初始化為 int 型別,因此它保存 int 型別的值,因此發生隱式型別轉換。在此處閱讀有關型別轉換的更多資訊
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/412636.html
標籤:
上一篇:使用模板化大整數的二進制除法
