Dan*_*zer 6 c++ variables reference
所以我试图学习C++,我遇到了一些令我困惑的事情.我有代码,
int x = 0;
int &y = x;
cout << &x<< " " << x << " " << &y << " " <<y<< endl;
Run Code Online (Sandbox Code Playgroud)
这编译好并导致:
0 003AFA08 0 003AFA08
Run Code Online (Sandbox Code Playgroud)
我无法理解为什么将x(一个int)转换为&y(引用)不会导致错误.起初我认为这是某种转换,但是,
int &y = &x;
Run Code Online (Sandbox Code Playgroud)
导致错误.
任何人都可以解释为什么这种方式有效吗?提前致谢.
Jam*_*lis 11
int&
不是地址.这是一个参考.
int& y = x;
声明y
作为参考x
.它实际上意味着y
成为另一个名称x
.任何时候你使用y
,就像你说的那样x
.
指针(不是引用)用于存储地址. int& y = &x;
是无效的,因为它&x
是x
(它是)的地址int*
. y
是对a的引用int
,而不是对a的引用int*
.
这不是转换.当你有一个可变型的T &
,其中T
是一些随机类型,你基本上是说:"我声明了一个名字是另一个名字或可能匿名值的别名." 它更像是typedef
一个指针.
引用通常被实现为地址,但这不是思考它们是什么的好模型.
在你的例子中,你感到困惑:
int * const &y = &x;
Run Code Online (Sandbox Code Playgroud)
会工作得很好.然后y
成为获取地址的临时结果的别名x
.请注意,它是对指针的引用.它必须是对常量指针的引用,因为它是对临时值的引用.
归档时间: |
|
查看次数: |
162 次 |
最近记录: |