Von dem, was ich verstehe, enthalten Zeiger die Adressen eines Werts, und Referenzen können als const
Zeiger gedacht werden.Wo werden Referenzen und Zeiger erzwungen?
Aus diesem Beispielcode:
int main() {
int i = 1;
int &ri = i;
int *pi = &i;
return 0;
}
die Demontage, die beiden Zeigern und Referenz genau gleich aussehen:
main:
push ebp
mov ebp, esp
sub esp, 16
mov DWORD PTR [ebp-12], 1
lea eax, [ebp-12]
mov DWORD PTR [ebp-8], eax
lea eax, [ebp-12]
mov DWORD PTR [ebp-4], eax
mov eax, 0
leave
ret
sind Zeiger und Verweise nur durch den Compiler erzwungen?
kämpfen, um zu verstehen, was Sie mit "erzwungen" meinen. Sie sind Sprachfeatures und funktionieren wie vorgesehen. –
BTW, das unoptimierte Assembly kontrolliert, ist ein schlechter Weg zu lernen, da Sie nur wirklich über die Implementierungsdetails einer bestimmten Implementierung erfahren. Sie könnten die Tatsache übersehen, dass 'int ri = 1; int & i = ri; 'hätte das gleiche Verhalten. –