Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> Langue C

Surcharge d'opérateurs en C++ : Guide pratique avec exemples de code

Qu'est-ce que la surcharge d'opérateurs ?

En utilisant la surcharge d'opérateurs en C++, vous pouvez assigner plusieurs significations à un opérateur dans la même portée. Le but est de donner un comportement personnalisé à un opérateur pour un type défini par l'utilisateur.

Avec la surcharge d'opérateurs, vous pouvez redéfinir la plupart des opérateurs C++ et effectuer différentes opérations en utilisant un seul symbole.

Dans ce tutoriel, vous apprendrez :

Syntaxe

Pour surcharger un opérateur C++, définissez une fonction membre spéciale à l'intérieur d'une classe comme suit :

class nom_classe {
    ...
public:
    type_retour operateur symbole (argument(s)) {
        ...
    }
    ...
};

Les composants sont :

Exemple 1 :

#include <iostream>
using namespace std;
class TestClass {
private:
    int count;
public:
    TestClass() : count(5) {}
    void operator --() {
        count = count - 3;
    }
    void Display() {
        cout << "Count: " << count;
    }
};
int main() {
    TestClass tc;
    --tc;
    tc.Display();
    return 0;
}

Sortie :

Surcharge d opérateurs en C++ : Guide pratique avec exemples de code

Voici une capture d'écran du code :

Surcharge d opérateurs en C++ : Guide pratique avec exemples de code

Explication du code :

  1. Inclure <iostream> pour accéder aux facilités d'entrée/sortie.
  2. Utiliser l'espace de noms std pour la brièveté.
  3. Définir une classe TestClass.
  4. Rendre count un membre de données privé.
  5. Fournir un constructeur public qui initialise count à 5.
  6. Surcharger l'opérateur préfixe -- pour soustraire 3 de count.
  7. Implémenter Display() pour afficher la valeur courante.
  8. Dans main(), créer une instance, appliquer l'opérateur surchargé et afficher le résultat.

Différentes approches de la surcharge d'opérateurs en C++

La surcharge peut être réalisée par :

  1. Fonctions membres
  2. Fonctions non-membres (amies ou fonctions libres)
  3. Fonctions amies (quand l'accès aux données privées est nécessaire)

Tous les opérateurs C++ peuvent-ils être surchargés ?

Non. Les opérateurs suivants ne sont pas surchargeables :

Choses à retenir

  1. La surcharge n'affecte que les types définis par l'utilisateur ; les types intégrés conservent leur comportement original.
  2. Les opérateurs d'affectation (=) et d'adresse (&) sont automatiquement surchargés pour les classes qui fournissent des constructeurs de copie ou des opérateurs d'affectation.
  3. La précédence des opérateurs reste inchangée ; vous pouvez utiliser des parenthèses pour forcer l'ordre d'évaluation.
  4. Trois opérateurs — ::, ., ?: — sont explicitement interdits de surcharge.

Règles de la surcharge d'opérateurs

Comment surcharger un opérateur

Exemple 1 : Opérateur d'incrémentation

#include <iostream>
using namespace std;
class OperatorOverload {
private:
    int x;
public:
    OperatorOverload() : x(10) {}
    void operator ++() {
        x += 2;
    }
    void Print() {
        cout << "The Count is: " << x;
    }
};
int main() {
    OperatorOverload ov;
    ++ov;
    ov.Print();
    return 0;
}

Sortie :

Surcharge d opérateurs en C++ : Guide pratique avec exemples de code

Capture d'écran du code :

Surcharge d opérateurs en C++ : Guide pratique avec exemples de code

Explication du code :

  1. Inclure <iostream> et utiliser l'espace de noms std.
  2. Définir la classe OperatorOverload avec un int x privé.
  3. Le constructeur initialise x à 10.
  4. Surcharger l'opérateur préfixe ++ pour ajouter 2 à x.
  5. Implémenter Print() pour afficher la valeur mise à jour.
  6. Dans main(), créer un objet, invoquer l'opérateur surchargé et afficher le résultat.

Exemple 2 : Addition de nombres complexes

#include <iostream>
using namespace std;
class TestClass {
private:
    int real, over;
public:
    TestClass(int rl = 0, int ov = 0) : real(rl), over(ov) {}
    TestClass operator + (TestClass const &obj) {
        TestClass result;
        result.real = real + obj.real;
        result.over = over + obj.over;
        return result;
    }
    void print() {
        cout << real << " + i" << over << endl;
    }
};
int main() {
    TestClass c1(9, 5), c2(4, 3);
    TestClass c3 = c1 + c2;
    c3.print();
}

Sortie :

Surcharge d opérateurs en C++ : Guide pratique avec exemples de code

Capture d'écran du code :

Surcharge d opérateurs en C++ : Guide pratique avec exemples de code

Explication du code :

  1. Inclure <iostream> et utiliser l'espace de noms std.
  2. Définir TestClass avec composants real et over.
  3. Fournir un constructeur pour l'initialisation.
  4. Surcharger l'opérateur + pour effectuer l'addition de nombres complexes.
  5. Retourner une nouvelle instance TestClass contenant la somme.
  6. Implémenter print() pour afficher le nombre complexe.
  7. Dans main(), créer deux instances, les additionner et afficher le résultat.

Résumé

Langue C

  1. Comment passer des tableaux aux fonctions en C++ : Guide pratique
  2. Maîtriser la surcharge d'opérateurs en Python : guide pratique
  3. Opérateurs C++ expliqués : Types, exemples et programmes d'exemple
  4. Boucle do-while en C++ : Syntaxe, exemples pratiques et boucles imbriquées
  5. Maîtriser les pointeurs en C++ : Concepts, exemples et applications pratiques
  6. Maîtriser le type char en C++ : Déclaration, ASCII et techniques de conversion
  7. Les structures en C++ expliquées avec un exemple pratique
  8. Maîtriser std::list en C++ : Syntaxe, Fonctions et Exemples Pratiques
  9. Les Fonctions en C++ Expliquées avec des Exemples de Code Pratiques