Supraîncărcarea funcțiilor

Supraîncărcarea (overloading) permite mai multe funcții cu același nume, dar cu parametri diferiți. Compilatorul alege versiunea potrivită.

overloading.cpp
int aduna(int a, int b) { return a + b; }
double aduna(double a, double b) { return a + b; }
int aduna(int a, int b, int c) { return a + b + c; }

cout << aduna(3, 4) << endl;      // 7 (versiunea int)
cout << aduna(1.5, 2.5) << endl;  // 4.0 (versiunea double)
cout << aduna(1, 2, 3) << endl;   // 6 (versiunea 3 parametri)
Supraîncărcarea se bazează pe tipul și numărul parametrilor, nu pe tipul de retur. Două funcții cu același nume și aceiași parametri dar return diferit duce la eroare de compilare.