所以我正在和一个朋友讨论关于参考和指点的问题。
我们讨论的是“您可以获取指针的地址,但不能获取引用的地址”。
在这一点上我不同意。让我们举一个例子:
int x = 0;
int &xRef = x;
cout << &xRef << &x <<endl;这个例子显示了相同的地址,但是我从不减少通过执行xRef来获取&xRef的地址。你难道不认为我们有两个变量有相同的地址,所以即使我取引用的地址,它仍然是引用的地址(即使那是x的地址)?
发布于 2014-05-30 16:37:16
一元运算符&返回指定对象的地址。引用不是对象。它是对对象的引用。所以这句话
cout << &xRef << &x <<endl;在这两种情况下,输出x的指定对象的地址。即使编译器可以为引用分配内存,引用本身没有地址,也就是说,不能应用运算符来获取它的地址。具有地址的引用引用的对象(或函数)。
发布于 2014-05-30 16:26:04
C++标准n3337 § 8.3.2/4
未具体说明引用是否需要存储(3.7)。
因此,未指定引用是否具有存储空间。很可能不是。只是化名而已。当您在代码中使用它时,如下所示,特殊操作是由编译器执行的,它可能会执行一些类似于指针操作的操作。
发布于 2014-05-30 16:26:23
您可以将引用看作对象的别名。因此,在您的示例中,&xRef声明了xRef,这是, x的另一个名称。因此,您打印两倍于同一对象的入口。
https://stackoverflow.com/questions/23959119
复制相似问题