Uwaga: Jeśli argument nie pasuje do parametru dokładnie, to może być poddany konwersji dopasowującej, ale im konwersja ta jest bardziej złożona, tym dopasowanie pierwotnego argumentu uznaje się za gorsze.
#include <iostream.h>
void out(char par); void out (i nt par);
int main(void)
out('a');
out(2);
out(2.0); // błąd (niejednoznaczność) return 0;
void out(char par)
cout« par «cndl;
void out(int par)
cout« par «endl;
Argument 'a' typu char najlepiej pasuje do parametru typu char. a argument 2 typu int najlepiej pasuje do parametru typu int.
Argument 2.0 typu double pasuje równie dobrze do parametru typu char jak i do parametru typu int. Ponieważ do żadnego z nich nie pasuje najlepiej, więc wywołanie out(2.0) jest błędne.
Gdyby z programu usunięto dowolną z funkcji out. to wszystkie odwołania do out byłyby poprawne.
Argumenty domniemane
W deklaracji parametru funkcji może wystąpić inicjator wyrażeniowy określający domniemaną wartość argumentu kojarzonego z tym parametrem.
int sum(int a. int b =0. int c =0);
Jeśli pewien parametr wyposażono w argument domniemany, to każdy z następnych parametrów także musi być wyposażony w argument domniemany.
int sum(int a, int b =0, int c); // Wad