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.请注意,它是对指针的引用.它必须是对常量指针的引用,因为它是对临时值的引用.