Surcharge des opérateurs d'affectation en C ++

Vous pouvez surcharger l'opérateur d'affectation (=) comme vous pouvez le faire avec d'autres opérateurs et il peut être utilisé pour créer un objet tout comme le constructeur de copie.

L'exemple suivant explique comment un opérateur d'affectation peut être surchargé.

#include <iostream>
using namespace std;
 
class Distance {
   private:
      int feet;             // 0 to infinite
      int inches;           // 0 to 12
      
   public:
      // required constructors
      Distance() {
         feet = 0;
         inches = 0;
      }
      Distance(int f, int i) {
         feet = f;
         inches = i;
      }
      void operator = (const Distance &D ) { 
         feet = D.feet;
         inches = D.inches;
      }
      
      // method to display distance
      void displayDistance() {
         cout << "F: " << feet <<  " I:" <<  inches << endl;
      }
};

int main() {
   Distance D1(11, 10), D2(5, 11);

   cout << "First Distance : "; 
   D1.displayDistance();
   cout << "Second Distance :"; 
   D2.displayDistance();

   // use assignment operator
   D1 = D2;
   cout << "First Distance :"; 
   D1.displayDistance();

   return 0;
}

Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant -

First Distance : F: 11 I:10
Second Distance :F: 5 I:11
First Distance :F: 5 I:11