#include<iostream>
using namespace std;
int fun(int &x)
{
return x;
}
int main()
{
cout << fun(10);
return 0;
}
谁能解释错误的原因?
谢谢
10
是一个常数,所以你不能传递对它的引用,仅仅是因为改变常数的整个概念很奇怪。
引入引用是为了解决 C(和更早的 C++)中的一个棘手问题,即所有内容都是按值传递的,如果您想将更改反映回调用者,则必须传入指针并取消引用函数内的指针以获取实际变量(用于读取和写入它)。
这是在下一个 ISO C 标准中非常好的东西。虽然不得不使用指针可能会让我们中的一些人在 Stack Overflow 上获得很多声誉,但这对世界上的 C 程序员来说并没有多大好处 :-)
您的问题的解决方案很简单。如果不需要改变函数中的item,正常传递即可:
int fun (int x) { ... }
如果您确实需要更改它,那么您必须传递一些可以更改的内容:
int xyzzy = 10;
cout << fun (xyzzy);
我们可以将此程序缩短为以下内容:
int& x = 10;
这段代码不起作用的原因是 10 是一个右值,而右值不能绑定到左值引用。如果这是真的,我们将能够更改文字的值(这在其他语言中是可能的,但在 C++ 中是不可能的)。
引用 ( &
) 必须指向(引用)变量。不能引用常量。