[英]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.