除了关于何时使用 which 的所有考虑之外,我仍然不确定指针与引用语义。
现在,我的印象是引用本质上是在声明它们时必须初始化的指针,然后从那时起不能指向其他任何东西。换句话说,它们是一个Type* const
(不是Type const*
),或者,它们不能被重新安装。它本质上成为该对象的“新名称”。现在我听说引用实际上不需要由编译器使用指针来实现,但我的印象是你仍然可以这样想它们,关于它们的可见行为将是什么。
但是为什么你不能做这样的事情:
int& foo = new int;
我想创建对动态内存的引用。这不编译。我得到错误
error: invalid initialization of non-const reference of type 'int&' from a temporary of type 'int*'
这对我来说很有意义。似乎 new 运算符将给定类型的指针返回到操作系统的内存地址?为我动态分配。
那么如何创建对动态内存的“引用”呢?
编辑:将不胜感激提供精确解释 C++ 中引用和指针之间差异的资源链接。