In diesem Code:Klarstellung in Bezug auf Auto zu konstanten Referenz
int a=8;
const int &b = a; //b is a Low-Level const
auto c = b;
Ich erwartete c
Konstante int-Typ sein, da es auto
ed auf ein niedriges Niveau const war. Aber es bezieht sich auf a
(die von b
Aliasing) statt b
für seine Erklärung.
c
nimmt der b
‚s Art nur dann, wenn es wie auto &c =b
verwendet Was verstehe ich nur Top-Level-const fallen gelassen wird. Kann mir bitte jemand erklären, was mit meinem Verständnis nicht stimmt?
während im Falle eines Zeigers, der niedrige Pegel const von auto
gerichtet:
int i=9;
const int * p=&i;
auto *d=p;
*d=45; // error: assignment of read-only location ‘* d’
.
So wird nur der Verweis aus dem Ausdruck nicht der Zeiger gelöscht, daher & mit Deklarator b angefügt ist, aber * mit p nicht angefügt ist nicht? –
@AgrudgeAmicus Ein Zeigerdeklarator deklariert die Variable als Zeigertyp; Ein Referenzdeklarator deklariert die Variable so, dass sie den Zieltyp hat und dass sie initialisiert wird, indem sie an ein anderes Objekt bindet, das möglicherweise bereits existiert –