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

C++ Surcharge des opérateurs d'entrée/sortie

C++ Surcharge d'opérateurs et fonctions surchargées

C++ Il est possible d'utiliser les opérateurs d'extraction >> et d'insertion << pour entrer et sortir des types de données intégrés. Vous pouvez surcharger les opérateurs d'extraction et d'insertion pour manipuler des objets, des types de données personnalisés utilisateur, etc.

Ici, un point est important, nous devons déclarer les fonctions de surcharge d'opérateur comme des fonctions amies de la classe, de sorte que nous puissions appeler directement les fonctions sans créer d'objet.

Le exemple suivant montre comment surcharger les opérateurs >> et <<.

#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;
      }
      friend ostream &operator<<( ostream &output, 
                                       const Distance &D
      { 
         output << "F : " << D.feet << " I : " << D.inches;
         return output;            
      }
 
      friend istream &operator>>( istream &input, Distance &D )
      { 
         input >> D.feet >> D.inches;
         return input;            
      }
};
int main()
{
   Distance D1(11, 10), D2(5, 11), D3;
 
   cout << "Entrée de la valeur de l'objet : " << endl;
   cin >> D3;
   cout << "Première distance : " << D1 << endl;
   cout << "Deuxième distance :" << D2 << endl;
   cout << "Troisième distance :" << D3 << endl;
 
 
   return 0;
}

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

$./a.out
Valeur de l'objet d'entrée :
70
10
Première distance : F : 11 I : 10
Deuxième distance : F : 5 I : 11
Troisième distance : F : 70 I : 10

C++ Surcharge d'opérateurs et fonctions surchargées