C++ 引用变量在C++;商店?

C++ 引用变量在C++;商店?,c++,C++,指针存储/分配一个内存地址 那么引用变量呢 它存储对象的实际值,就像堆栈上的任何其他非指针简单变量一样 谢谢 引用本身不包含任何内容。C++标准甚至声明不需要实现任何一个存储来存储引用。它实际上只是它引用的对象或函数的别名。尝试获取引用的值将获取它引用的对象或函数的值(在这种情况下,您将获得一个函数指针,就像您尝试使用其原始名称从函数中获取值一样) 当然,当您在较低级别上查看汇编代码时,引用就像指针一样。但在语言层面上,它们是完全不同的动物。例如,对const的引用可以绑定到临时变量,它们是实现

指针存储/分配一个内存地址

那么引用变量呢

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


谢谢

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

当然,当您在较低级别上查看汇编代码时,引用就像指针一样。但在语言层面上,它们是完全不同的动物。例如,对const的引用可以绑定到临时变量,它们是实现复制构造函数所必需的,用于重载运算符,并且不能将它们放入数组中(即使您初始化了数组的所有元素),因为引用不是对象(与指针相反)。它们可能听起来很琐碎,但却是引用类型

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

不完全正确:因为您没有两个值的副本(一个副本在对象中,另一个副本在对对象的引用中);相反,引用可能实现为指向对象的指针

指针和对象之间的差异:

  • 引用不能为空
  • 引用不能取消初始化(定义时必须初始化)
  • 无法将引用更改为引用其他对象

我想说,它只是一个语法不同的指针。

在内部,它只是一个指向对象的指针(虽然标准不一定强制要求它,但所有编译器都以这种方式实现)。从外部看,它的行为与对象本身类似。将其视为一个带有隐式“*”运算符的指针(当然,声明除外)。它也是一个常量指针(不要与指向常量的指针混淆),因为一旦声明它就不能重定向。

不能有一个包含常量引用的类或结构数组?或者你的意思是你不能有一个常量引用数组?msn您可以很好地使用带有引用的结构。只是没有引用数组我放在其中的常量只引用到临时对象的绑定:stringconst&a=string(“foo”);