Surcharge de l'opérateur ()

    Un objet d'une classe dans laquelle est redéfini l'opérateur () est appelé un functor. Défini comme un objet, il est utilisé comme une fonction. La même classe peut contenir plusieurs surcharges de l'opérateur (), à condition qu'elles se distinguent par le profil et pas seulement par le type de retour.

Exemple

(juste pour montrer !)
 
class CRationnel
{
    // ...
    int operator () (const bool GetNumerateur = true)
    {
        return GetNumerateur ? m_Num : m_Denom;
    }

}; // CRationnel

Utilisation

CRationnel R (12, 4);

cout << "Numérateur   = " << R ()  << endl;
cout << "Dénominateur = " << R (/* GetNumerateur = */ false) << endl;