我在c++中看到了一些代码,这让我有些困惑:
class Myspa {};
vector<Myspa> myspa;
Myspa * myspa_p;
myspa_p = &myspa.at(0);
vector.at()
函数将返回元素的引用,myspa_p
是一个指针,那么myspa_p = &myspa.at(0)
是什么意思? 最佳答案
当您返回引用时,不要认为引用是指针可以指向的独特数据类型/对象-只有指针myspa_p
和 vector myspa
,而没有神秘的第三“事物”。取而代之的是,将引用视为一种就地授予对对象(此处是myspa
的第一个元素)的访问权限的方法,而无需将其复制到任何地方。
因此,myspa.at(0)
可以直接访问myspa
vector 内的初始Myspa对象。然后,添加开头的&
-形成&myspa.at(0)
-简单地询问该初始对象的地址-因此该地址可以存储在指针myspa_p
中。