Struktury i C++
Referencje

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 .


Tomasz Kapela, Kraków 2011-2020