[英]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
,但是將腳本放在一起似乎並非如此,因為我可以修改從function1
和function2
返回的兩個變量,它們似乎沒有任何明顯的區別. 例如,以下代碼可以正常工作:
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.