Dies ist ein Zeiger auf das aufrufende Objekt (es gibt den r-Wert zurück).Was gibt & ** genau zurück?
* Dies ist ein Zeiger auf den Zeiger des aufrufenden Objekts (es gibt den Wert der Adresse zurück).
** Dies ist ein Zeiger auf den Zeiger des Zeigers des aufrufenden Objekts (???).
& *** Dies ist eine Referenz auf den Zeiger des Zeigers des Zeigers des aufrufenden Objekts (???).
std::vector<int>:: iterator i = vector1.begin();
i ist der Zeiger auf seinen eigenen r-Wert (gibt seinen eigenen Wert zurück).
* i ist der Zeiger eines r-Wertes eines Objekts, das in einem Vektor enthalten ist (gibt den Wert zurück, auf den in & Wert gezeigt wird).
** i ist der Zeiger auf den Zeiger eines r-Wertes eines Objekts in einem Vektor (???).
Ich bin wirklich verwirrt.
Hier ist ein Beispielcode, wo wir den Ausdruck finden & ** dieses:
class _Iter
{
private:
ListElem *pCurr;
const List *pList;
public:
_Iter(ListElem *pCurr, const List *list)
: pCurr_(pCurr), pList(list)
{}
T& operator*() { return pCurr_->data; }
T* operator->() { return &**this; }
};
Der Aufrufer erhält '& pCurr-> data'. –
Sie müssen sich daran erinnern, dass '*' genau rückwärts arbeitet, je nachdem, ob es sich um eine Deklaration oder eine ausführbare Anweisung handelt. –
"Dies ist ein Zeiger auf das aufrufende Objekt (es gibt den r-Wert zurück)" benannte Variablen können nicht r-Wert sein –