【发布时间】:2015-06-05 08:45:46
【问题描述】:
为什么下面的程序编译失败:
#include<iostream>
using namespace std;
int fun(int &x)
{
return x;
}
int main()
{
cout << fun(10);
return 0;
}
它给出以下编译错误: 从“int”类型的右值初始化“int&”类型的非常量引用无效
要使其编译成功,我有 2 个选项: 1.我们必须使用“int fun(const int &x)”而不是“int fun(int &x)” 2. 使用“int i=10;cout
所以,看起来,如果我们将硬编码值传递给函数,它将被视为“常量引用”。
我在这里吗?还是有任何其他原因导致上述程序无法编译?
【问题讨论】:
-
您可以简单地删除 '&' 并使用 pass-by-value 而不是 pass-by-reference。
-
是的,这当然可以,但 Q 是为什么它不能与 & 一起使用。
标签: c++