在下面的函数的返回中添加const限定符的重要性是什么?

时间:2017-07-19 14:35:22

标签: c++

我有以下代码库

#include <cstdio>

int foo(const int &y) {
    static int z = y;
    z = z + 1;
    return z;
}


int main(int argv, char *args[]) {
    int x = 6;
    int r = foo(x);
    printf("The value returned is %d\n", r);
    printf("The vlaue of x is %d\n", x);
    r = foo(x);
    printf("The value returned is %d\n", r);
    printf("The vlaue of x is %d\n", x);

}

现在,上面的代码打印相同的输出

The value returned is 7
The value of x is 6
The value returned is 8
The value of x is 6

无论函数是否定义如下:

int foo(const int &y) {

或者像这样:

const int & foo(const int &y) {

所以我的问题是副作用是什么或为什么使用/不使用const int &返回类型而不是int返回类型

很重要

1 个答案:

答案 0 :(得分:1)

对于int,副本很便宜,这是最受欢迎的方式:

int foo(const int &y)

当对这样小的数据类型使用const int&时,间接将使代码对缓存不太友好,并且可能效率低于复制版本。