English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

C++ Tutoriel de base

C++ Contrôle de flux

C++ Fonction

C++ Tableau & chaîne

C++ Structure de données

C++ Classe & objet

C++ Pointeur

C++ Héritage

C++ Tutoriel STL

C++ Manuel de référence

C++ Surcharge de l'opérateur d'appel de fonction ()

C++ Surcharge d'opérateurs et surcharge de fonctions

L'opérateur d'appel de fonction () peut être surchargé pour les objets de la classe. Lorsque vous surchargez (), vous n'ouvrez pas une nouvelle méthode d'appel de fonction, mais vous créez un opérateur de fonction qui peut transmettre un nombre quelconque de paramètres.

L'exemple suivant montre comment surcharger l'opérateur d'appel de fonction ().

#include <iostream>
using namespace std;
 
class Distance
{
   private:
      int feet;             // 0 à l'infini
      int inches;           // 0 à 12
   public:
      // Constructeurs nécessaires
      Distance(){
         feet = 0;
         inches = 0;
      }
      Distance(int f, int i){
         feet = f;
         inches = i;
      }
      // Surcharge de l'opérateur d'appel de fonction
      Distance operator()(int a, int b, int c)
      {
         Distance D;
         // Effectuer des calculs aléatoires
         D.feet = a + c + 10;
         D.inches = b + c + 100 ;
         return D;
      }
      // Méthode d'affichage de la distance
      void displayDistance()
      {
         cout << "F: " << feet << " I:" << inches << endl;
      }
      
};
int main()
{
   Distance D1(11, 10), D2;
   cout << "Première distance : "; 
   D1.displayDistance();
   D2 = D1(10, 10, 10); // invoke operator()
   cout << "Deuxième distance :"; 
   D2.displayDistance();
   return 0;
}

Lorsque le code suivant est compilé et exécuté, il produit les résultats suivants :

Première distance : F: 11 I:10
Deuxième distance : F: 30 I:120

C++ Surcharge d'opérateurs et surcharge de fonctions