C++传递引用

Sim*_*ity 0 c++ pass-by-reference

我正在使用这个简单的代码尝试C++ pass-by-reference:

#include <iostream>
int square(int &x)
{
return x*x;
}
int main()
{
std::cout<<"Square of 4 is: "<<square(4)<<std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试运行它时,我得到以下内容:

在此输入图像描述

UPDATE

在根据@Pablo Santa Cruz的答案修改代码后,我得到以下错误(我只是屏幕捕获部分错误):

在此输入图像描述

这是为什么?

谢谢.

peo*_*oro 10

您不能将临时值传递给非常量引用.

square接受const int &:

int square(const int &x)
{
    return x*x;
}
Run Code Online (Sandbox Code Playgroud)


Pab*_*ruz 5

4如果您期望引用,则无法传递常量().

必须传递一个变量:

int n = 4;
square(n);
Run Code Online (Sandbox Code Playgroud)

话虽如此,你可能想要这样的东西:

void square(int &x)
{
   x = x*x;
}
Run Code Online (Sandbox Code Playgroud)

不是返回int的函数.