簡體   English   中英

const 在返回類型中使用時如何影響 function

[英]How does const affect a function when used in the return type

const如何影響function1並使其與function2有何不同?

const int function1(const int &a) 
{
    return a+1;
}

int function2(const int &a)
{
    return a+1;
}

我希望返回的變量是const int而不是int ,但是將腳本放在一起似乎並非如此,因為我可以修改從function1function2返回的兩個變量,它們似乎沒有任何明顯的區別. 例如,以下代碼可以正常工作:

int main () {
    int a = 1;
    auto b = function1(a);
    auto c = function2(a);
    ++b;
    ++c;
}

根據cppreference

非類非數組純右值不能是 cv 限定的。 (注意:function 調用或強制轉換表達式可能會導致非類 cv 限定類型的純右值,但 cv 限定符會立即被去除。)

從函數返回的結果最終作為臨時值,在這種情況下特別是純右值。 由於int是一個原始類型,它不能是const作為純右值,因此失去了它的 const 性。

如果我們有一個引用或指向int的指針,我們就沒有純右值,所以const將被保留。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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