【发布时间】:2015-10-31 17:57:11
【问题描述】:
根据这些链接:stackoverflow question 和 C++ FQA 引用一旦被初始化就不能很好地引用另一个对象/变量,但是下面的代码呢?
// Example program in C++
#include <iostream>
using namespace std;
int main()
{
int x=10, z=12;
int &y=x;
++y;
y=z; //valid?
cout << x << ", "<< y <<", " << z << endl; // prints 12, 12, 12
return 0;
}
下面是关于指针重新定位的 C 代码,它似乎有效,对吗?
#include <stdio.h>
int main(int argc, char *argv[])
{
int a=10, b=20;
int *ptr;
ptr = &a;
ptr = &b;
printf("%d\n",a); // prints 10
printf("%d\n",*ptr); // prints 20
return 0;
}
有人能把上面两个代码中的概念搞清楚吗?
【问题讨论】:
-
您的代码说明了一切。
y=z;更改为x。 -
是的。重新定位指针很好,重新定位引用不是。
-
@chris 感谢您的评论,但是什么是参考重置?是不是参考从 x 到 z 重新安置!?
-
请选择C和C++之一。 C 没有引用,所以我将其标记为 C++。如果您的意图不同,请重新标记。
-
@highlander141,C++ 没有合法的引用重置。最接近的是您的指针示例,这是
std::reference_wrapper在您重新安装它时在内部执行的操作。