1
私が理解するところでは、ポインタは値のアドレスを保持し、参照はconst
ポインタと考えることができます。参照とポインタはどこに強制されますか?
このサンプルコードから:
int main() {
int i = 1;
int &ri = i;
int *pi = &i;
return 0;
}
解体、ポインタと参照の両方がまったく同じに見える:
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
は、コンパイラによって強制ポインタや参照はありますか?
"強制"が意味することを理解するのに苦労しています。それらは言語機能であり、意図したとおりに動作しています –
最適化されていないアセンブリを検査することは、特定の実装の実装の詳細について実際にしか知りません。 'int ri = 1;という事実を見落とすかもしれません。 int&i = ri; 'は同じ動作をします。 –