const在返回类型中使用时如何影响函数

问题描述 投票:1回答:1

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;
}
c++ const auto
1个回答
0
投票

根据cppreference

非类非数组prvalue不能通过cv限定。 (注意:函数调用或强制转换表达式可能会导致非类cv限定类型的prvalue,但cv限定符会立即被剥离。)

从函数返回的结果最终是临时的,在这种情况下特别是prvalue。由于int是原始类型,因此它不能作为const作为prvalue,因此会失去其常量性。

如果有对int的引用或指针,则不会有prvalue,因此将保留const

© www.soinside.com 2019 - 2024. All rights reserved.