簡體   English   中英

指向c ++中引用的指針

[英]the pointer to a reference in c++

我在c ++中看到了一些代碼,這對我來說有點困惑:

class Myspa {};

vector<Myspa> myspa;

Myspa * myspa_p;

myspa_p = &myspa.at(0);

vector.at()函數將返回元素的引用, myspa_p是一個指針,那么myspa_p = &myspa.at(0)是什么意思?

vector.at()函數將返回元素的引用,myspa_p是一個指針,那么myspa_p =&myspa.at(0)是什么意思?

當你返回一個引用時,不要認為引用是指針可以指向的數據的不同類型/對象 - 只有指針myspa_p和向量myspa而沒有神秘的第三個“東西”。 相反,將引用視為一種原位授予對象訪問權限(此處為myspa的第一個元素)的方法,而無需將其復制到任何地方。

因此, myspa.at(0)授予對myspa向量內部的初始Myspa對象的直接訪問權限。 然后,添加一個前導& - 形成&myspa.at(0) - 只是詢問該初始對象的地址 - 因此地址可以存儲在指針myspa_p

這段代碼編譯..變量myspa_p指向矢量myspa的第一個元素。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM