[英]Is the hard coded value in function argument a const reference?
為什么以下程序無法編譯:
#include<iostream>
using namespace std;
int fun(int &x)
{
return x;
}
int main()
{
cout << fun(10);
return 0;
}
它給出以下編譯錯誤:從類型'int'的右值對類型'int&'的非常量引用進行無效的初始化
要使其成功編譯,我有2個選項:1.我們必須使用“ int fun(const int&x)”而不是“ int fun(int&x)” 2.使用“ int i = 10; cout << fun(一世);” 而不是“ cout << func(10)”
因此,好像,如果我們將硬編碼值傳遞給函數,它將被視為“ const reference”。
我在這里嗎? 還是有其他原因導致以上程序無法編譯?
這不會編譯,因為非常量左值引用不能綁定到右值。
這樣考慮:如果fun
中的x
是非常量左值引用,我們應該可以對其進行修改。 但是,我們傳入了整數常量10
。 修改整數文字意味着什么? 那沒有道理,所以你做不到。
為了解決這個問題,您應該通過引用引用常量來接受您的參數(假設您不打算在fun
對其進行修改):
int fun(const int &x)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.