指向 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 = &amp;myspa.at(0)是什么意思呢?

【问题讨论】:

【参考方案1】:

vector.at()函数会返回一个元素的引用,myspa_p是一个指针,那么myspa_p = &myspa.at(0)是什么意思呢?

当您返回引用时,不要将引用视为指针可以指向的不同类型/数据对象 - 只有指针 myspa_p 和向量 myspa,没有神秘的第三个“事物”。相反,将引用视为一种在原地授予对对象(此处为 myspa 的第一个元素)的访问权限的方法,而无需将其复制到任何地方。

因此,myspa.at(0) 授予对 myspa 向量内初始 Myspa 对象的直接访问权限。然后,添加一个前导 &amp; - 形成 &amp;myspa.at(0) - 只需询问该初始对象的地址 - 因此该地址可以存储在指针 myspa_p 中。

【讨论】:

【参考方案2】:

此代码编译.. 变量 myspa_p 指向向量 myspa 的第一个元素。

myspa_p 包含向量的第一个元素的左值!!

【讨论】:

以上是关于指向 C++ 中的引用的指针的主要内容,如果未能解决你的问题,请参考以下文章