我正在阅读C++初级读物,我发现了以下两种说法:
但是,当我运行以下代码时,我不会收到错误或警告,而且我的代码运行良好:
int main(int argc, const char * argv[]) {
// insert code here...
int i, &ri = i;
int &bi = ri;
std::cout << "The address of ri is " << &ri << std::endl;
std::cout << "The address of bi is " << &bi << std::endl;
int* p = &ri;
std::cout << p << std::endl;
return 0;
}输出:
The address of ri is 0x7fff5fbff76
The address of bi is 0x7fff5fbff76c
0x7fff5fbff76c知道为什么会这样吗?
谢谢。
发布于 2017-02-09 05:27:29
他们的意思是你不能有一个int& &类型。
在您的代码中,引用ri是指对象i。
当您执行int &bi = ri;时,您不是在引用引用,而是再次引用同一个对象。
发布于 2017-02-09 05:33:31
在上面的代码中,您没有创建任何类型的变量来保存引用地址。
在代码中保存引用地址的逻辑含义是:
int &bi = &ri;
但这段代码会产生错误。
因此,您的代码正在工作,因为您已经创建了变量,所有这些变量都保存变量i的地址。
发布于 2017-02-09 12:07:10
int &bi = ri;
这意味着“将引用bi设置为等于引用ri”。以与分配任何其他简单类型相同的方式。
int* p= &ri;
聪明的编译器将“引用的地址”替换为“引用引用的对象的地址”。
https://stackoverflow.com/questions/42128707
复制相似问题