我在很多地方读过有关参考文献的内容:
引用就像一个const指针
引用总是指对象
初始化后,无法重新设置参考
我想在最后一点说清楚.那是什么意思?
我试过这段代码:
#include <iostream>
int main()
{
int x = 5;
int y = 8;
int &rx = x;
std::cout<<rx<<"\n";
rx = y; //Changing the reference rx to become alias of y
std::cout<<rx<<"\n";
}
Run Code Online (Sandbox Code Playgroud)
产量
5
8
Run Code Online (Sandbox Code Playgroud)
那么"引用无法重新定位"是什么意思?
Ale*_*son 13
这一行:
rx = y;
Run Code Online (Sandbox Code Playgroud)
不要使rx指向y.它使x的值(通过引用)成为y的值.看到:
#include <iostream>
int main()
{
int x = 5;
int y = 8;
int &rx = x;
std::cout << rx <<"\n";
// Updating the variable referenced by rx (x) to equal y
rx = y;
std::cout << rx <<"\n";
std::cout << x << "\n";
std::cout << y << "\n";
}
Run Code Online (Sandbox Code Playgroud)
因此,在初始赋值之后无法更改rx引用的内容,但您可以更改所引用事物的值.
因此,对于此示例,引用类似于常量指针(其中指针地址是常量,而不是该地址处的值).但是有一些重要的区别,一个很好的例子(正如Damon所指出的那样)是你可以将临时值分配给本地const引用,编译器会延长它们的生命周期以保持引用的生命周期.
关于引用和常量指针之间差异的更多详细信息可以在SO帖子的答案中找到.
int &rx = x;让rx一个别名x.
然后,rx = y暗示x = y
在创建别名之后,任何使用它(rx)都将等效于使用x.这样你就无法撤消(重新设定rx)来制作rx别名'y'.
| 归档时间: |
|
| 查看次数: |
1526 次 |
| 最近记录: |