La surcharge des fonctions est un autre moyen d'obtenir des fonctions polymorphes. Dans un souci d'homogénéité avec les types de bases, il peut être utile de surcharger des opérateurs.
class complexe {
double re,im ;
public:
complexe(const double r=0.0, const double i=0.0) ;
friend complexe operator + (const complexe a, const complexe b) ;
};
complexe::complexe(const double r, const double i)
: re(r),im(i) {}
complexe operator + (const complexe a,const complexe b) {
return complexe(a.r+b.r,a.i+b.i) ;
}
...
complexe a(1.0,2.0) , b(2.0) ;
complexe z = operator + (a,b) ;
complexe z = a+b ; // on ecrira plutot cette ligne
à détailler : le nouveau mot-clé operator, les fonctions amies.