Przekazywanie argumentów przez referencje w C++ jest równoważne w assemblerze przekazywaniu wskaźnika zmiennej.
void fun(int * x) { *x = 1; } void fun(int & x) { x = 1; } int main() { int x = 0; fun(&x); fun(x); } | _Z3funPi: push ebp mov ebp, esp mov eax,[ebp+8] mov [eax], 1 pop ebp ret _Z3funRi: push ebp mov ebp, esp mov eax, [ebp+8] mov [eax], 1 pop ebp ret global main main: push ebp mov ebp, esp sub esp, 20 mov [ebp-4], 0 lea eax, [ebp-4] mov [esp], eax call _Z3funPi lea eax, [ebp-4] mov [esp], eax call _Z3funRi mov eax, 0 leave ret |
Referencje są tylko udogodnieniem w sposobie zapisu, zwłaszcza przy przeciążaniu operatorów np. a + b zamiast &a + &b .