Funktionsnamen können überladen werden, d.h. der gleiche Funktionsname kann benutzt werden, sofern verschiedene Parametertypen und/oder Parameteranzahlen verwendet werden.
Prototypen:
double abs(double); // absolute value of double int abs(int); // absolute value of int double abs(double,double); // absolute value of "complex"
Implementierung:
double abs( double x ) { return(x>=0.0?x;-x); } int abs( int i ) { return(i>=0?i;-i); } double abs( double real, double imag ) { return(sqrt(real*real+imag*imag)); }
Vorsicht ist wegen impliziter Typ-Konvertierung in C/C++ geboten, insbesondere wegen des NULL-Zeigers, der in C++ durch die einfache 0 ausgedrückt wird.