繁体   English   中英

C ++中的Reference Variable有什么价值?

[英]What value does a Reference Variable in C++ store?

指针存储/被分配一个存储器地址;

那个参考变量怎么样?

它像堆栈上的任何其他非指针简单变量一样存储对象的实际值?

谢谢!

引用本身不包含任何内容。 C ++标准甚至声明不需要实现为引用分配任何存储。 它实际上只是它引用的对象或函数的别名。 尝试获取引用的值将获取对象或函数的值(在这种情况下,您将获得一个函数指针,就像当您尝试使用其原始名称从函数中获取值时),它引用,代替。

当然,当你进入较低级别并查看汇编程序代码时,引用就像指针一样。 但在语言层面,它们是完全不同的野兽。 例如,对const的引用可以绑定到temporaries,它们需要实现一个复制构造函数,用于重载运算符并且它们不能被放入一个数组中(即使你初始化它的所有元素也没有),因为引用是no对象(与指针相对)。 它们听起来很简单,就像参考类型一样。

在内部,它只是指向对象的指针(尽管标准不一定强制要求,所有编译器都以这种方式实现)。 在外部,它的行为与对象本身相似。 可以把它想象成一个带有隐式'*'运算符的指针,无论它在哪里使用(当然,除了声明)。 它也是一个const指针(不要与指向const的指针混淆),因为它一旦声明就无法重定向。

它像堆栈上的任何其他非指针简单变量一样存储对象的实际值?

不完全是这样的:因为你没有两个值的副本(对象中有一个副本,而对象的引用中有另一个副本); 相反,引用可能实现为指向对象的指针。

指针和对象之间的差异:

  • 引用不能为null
  • 引用不能是未初始化的(必须在定义时初始化)
  • 引用不能更改为引用不同的对象

我会说它只是一个具有不同语法的指针。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM