【发布时间】:2009-01-05 01:43:28
【问题描述】:
一个指针存储/分配一个内存地址;
引用变量呢?
它存储对象的实际值,就像堆栈上的任何其他非指针简单变量一样?
谢谢!
【问题讨论】:
标签: c++
一个指针存储/分配一个内存地址;
引用变量呢?
它存储对象的实际值,就像堆栈上的任何其他非指针简单变量一样?
谢谢!
【问题讨论】:
标签: c++
引用本身不包含任何内容。 C++ 标准甚至声明,实现不需要为引用分配任何存储。它实际上只是它引用的对象或函数的别名。尝试获取引用的值将获取对象或函数的值(在这种情况下,您将获得一个函数指针,就像您尝试使用其原始名称从函数中获取值一样)它引用,而是。
当然,当您进入较低级别并查看汇编代码时,引用就像指针一样。但在语言层面,它们是完全不同的野兽。例如,对 const 的引用可以绑定到临时对象,它们需要实现复制构造函数,用于重载运算符,并且它们不能放入数组中(即使你初始化它的所有元素也不行),因为引用不是对象(相对于指针)。尽管听起来很简单,但它们是引用类型。
【讨论】:
在内部,它只是一个指向对象的指针(尽管标准不一定要求它,但所有编译器都以这种方式实现)。在外部,它的行为类似于对象本身。将其视为一个带有隐式“*”运算符的指针,无论在何处使用(当然,声明除外)。它也是一个 const 指针(不要与指向 const 的指针混淆),因为它一旦声明就不能被重定向。
【讨论】:
它存储对象的实际值,就像堆栈上的任何其他非指针简单变量一样?
不完全是:因为您没有 两个 值的副本(一个副本在对象中,另一个副本在对象的引用中);相反,引用可能实现为指向对象的指针。
指针和对象的区别:
【讨论】:
我会说它只是一个语法不同的指针。
【讨论】: