Pasare prin referință

Pasând prin referință (&), funcția operează direct pe variabila originală, fără a o copia — util pentru modificare și pentru obiecte mari.

void swap(int& a, int& b) {
  int temp = a;
  a = b;
  b = temp;
}

int x = 3, y = 7;
swap(x, y);
cout << x << " " << y << endl;  // 7 3

Referință const — eficiență fără modificare

// Evită copierea unui string mare, dar nu îl modifică
void afisare(const string& s) {
  cout << s << endl;
}

string lung(100000, 'x');  // string de 100000 caractere
afisare(lung);  // nu copiază, rapid!
Regulă generală: pasează tipuri mari (string, vector, struct) prin const&. Pasează tipuri mici (int, double, char) prin valoare.