我在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中。

07-24 14:03