簡體   English   中英

函數參數中的硬編碼值是const引用嗎?

[英]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.

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