#include<iostream>
using namespace std;
int fun(int &x)
{
return x;
}
int main()
{
cout << fun(10);
return 0;
}
任何人都可以解释错误的原因吗?
谢谢
最佳答案
10
是一个常量,所以您不能传递对它的引用,只是因为更改常量的整个概念很奇怪。
引入引用是为了解决 C(和更早的 C++)中的一个棘手问题,事实上一切都是按值传递的,如果你想将更改反射(reflect)回调用者,你必须传入一个指针并在函数中取消引用该指针以获取实际变量(用于读取和写入它)。
在下一个 ISO C 标准中,这将是非常重要的好东西。虽然必须使用指针可能会让我们中的一些人在 Stack Overflow 上获得很多赞誉,但它对世界上的 C 程序员并没有多大好处:-)
您的问题的解决方案很简单。如果您不需要更改函数中的项目,只需正常传递即可:
int fun (int x) { ... }
如果您确实需要更改它,那么您必须传递一些可以更改的内容:
int xyzzy = 10;
cout << fun (xyzzy);
关于c++ - 从类型 'int&' 的临时类型 'int' 的非常量引用的无效初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16767345/