指向 C++ 中的引用的指针
Posted
技术标签:
【中文标题】指向 C++ 中的引用的指针【英文标题】:the pointer to a reference in c++ 【发布时间】:2012-02-13 09:24:03 【问题描述】:我看到了一些 c++ 的代码,这让我有点困惑:
class Myspa ;
vector<Myspa> myspa;
Myspa * myspa_p;
myspa_p = &myspa.at(0);
vector.at()
函数会返回一个元素的引用,myspa_p
是一个指针,那么myspa_p = &myspa.at(0)
是什么意思呢?
【问题讨论】:
【参考方案1】:vector.at()函数会返回一个元素的引用,myspa_p是一个指针,那么myspa_p = &myspa.at(0)是什么意思呢?
当您返回引用时,不要将引用视为指针可以指向的不同类型/数据对象 - 只有指针 myspa_p
和向量 myspa
,没有神秘的第三个“事物”。相反,将引用视为一种在原地授予对对象(此处为 myspa
的第一个元素)的访问权限的方法,而无需将其复制到任何地方。
因此,myspa.at(0)
授予对 myspa
向量内初始 Myspa 对象的直接访问权限。然后,添加一个前导 &
- 形成 &myspa.at(0)
- 只需询问该初始对象的地址 - 因此该地址可以存储在指针 myspa_p
中。
【讨论】:
【参考方案2】:此代码编译.. 变量 myspa_p 指向向量 myspa 的第一个元素。
myspa_p 包含向量的第一个元素的左值!!
【讨论】:
以上是关于指向 C++ 中的引用的指针的主要内容,如果未能解决你的问题,请参考以下文章