Mah*_*esh 31 c++ pointers reference
正如标题本身所提到的 - 为什么指向引用的指针是非法的,而反向在C++中是合法的?
谢谢.
Jam*_*lis 45
指针需要指向一个对象.引用不是对象.
如果你有一个引用r
,一旦它被初始化,你使用的任何时候r
实际上都在使用引用引用的对象.
因此,您无法获取引用的地址,以便能够首先获取指向它的指针.请考虑以下代码:
int x;
int& rx = x;
int* px = ℞
Run Code Online (Sandbox Code Playgroud)
在最后一行中,&rx
获取所引用的对象的地址rx
,因此它与您所说的完全相同&x
.
AnT*_*AnT 15
引用实现的高级概念只是现有对象的另一个名称.您可以拥有指向对象(或函数)的指针,但不能指向对象的名称.出于这个原因,指向引用的指针的想法毫无意义.换句话说,引用并不重要,一般情况下它们根本就不存在于内存中.它们不存在可以指向的东西.
确实,在实践中,许多情况下引用确实占用了内存(并且伪装成指针实现).但这只是特定于某些特定情境的实现细节.一般情况下,引用不占用内存,正如语言规范中明确指出的那样 紧接着语言规范.
指向引用(对象)的指针和指向实际对象的指针有什么区别?不能将引用更改为引用另一个对象。只需使用指向相关对象的常规指针即可。
另一方面,对指针的引用,就像任何其他引用一样,为您提供了一个特定变量的可修改句柄。在这种情况下,它恰好是一个指针。