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érateur C++ avec des exemples

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

Utilisation de la surcharge d'opérateur en C++, vous pouvez spécifier plusieurs significations pour un opérateur dans une portée. Le but de la surcharge d'opérateur est de fournir une signification particulière à un opérateur pour un type de données défini par l'utilisateur.

Avec l'aide de la surcharge d'opérateurs, vous pouvez redéfinir la majorité des opérateurs C++. Vous pouvez également utiliser la surcharge d'opérateurs pour effectuer différentes opérations à l'aide d'un seul opérateur.

Dans ce didacticiel C++, vous apprendrez :

Syntaxe

Pour surcharger un opérateur C++, vous devez définir une fonction spéciale à l'intérieur de la classe comme suit :

class class_name
{
    ... .. ...
    public
       return_type operator symbol (argument(s))
       {
           ... .. ...
       } 
    ... .. ...
};

Voici une explication de la syntaxe ci-dessus :

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 :

Voici une capture d'écran du code :

Explication du code :

  1. Inclure le fichier d'en-tête iostream dans notre code pour utiliser ses fonctions.
  2. Incluez l'espace de noms std dans notre programme pour utiliser ses classes sans l'appeler.
  3. Créez une classe nommée TestClass.
  4. Utilisez le modificateur d'accès privé, qui marque un membre de classe comme accessible en privé.
  5. Créez un nombre entier de variables. Cette variable sera accessible en privé.
  6. Utilisez le modificateur d'accès public, qui marque un membre de classe comme accessible en privé.
  7. Utilisez un constructeur de classe pour initialiser le compteur de variable à 5.
  8. Surcharger la signification de l'opérateur —.
  9. L'opérateur décrémentera la valeur de la variable x de 1.
  10. Fin de la section sur la surcharge des opérateurs. L'opérateur a reçu un nouveau nom.
  11. Définir une fonction nommée fonction Display().
  12. Imprime la valeur de la variable count à côté d'un autre texte sur la console lorsque la fonction Display() est appelée. Le } marque la fin du corps de la fonction Display().
  13. Fin du corps de la classe.
  14. Appelez la fonction main(). La logique du programme doit être ajoutée dans cette fonction.
  15. Créez une instance de la classe TestClass et donnez-lui le nom tc.
  16. Cela appellera la fonction void operator –().
  17. Utilisez la position de la classe TestClass pour appeler la fonction Display().
  18. La fonction doit renvoyer une valeur en cas de réussite.
  19. Fin du corps de la fonction main().

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

Vous pouvez effectuer une surcharge d'opérateur en implémentant l'un des types de fonctions suivants :

  1. Fonction membre
  2. Fonction non-membre
  3. Fonction ami

Vous pouvez faire de la fonction de surcharge de l'opérateur une fonction amie si elle a besoin d'accéder aux membres de la classe privée et protégée.

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

Non. Certains opérateurs C++ ne peuvent pas être surchargés.

Ils incluent :

À retenir :

  1. Avec la surcharge d'opérateurs, vous pouvez redéfinir le fonctionnement d'un opérateur uniquement pour les types définis par l'utilisateur (objets, structures). Vous ne pouvez pas l'utiliser pour les types intégrés (float, char, int, etc.).
  2. Les opérateurs =et &C++ sont surchargés par défaut. Par exemple, vous pouvez copier les objets d'une même classe directement à l'aide de l'opérateur =.
  3. La priorité des opérateurs ne modifie pas l'association et la priorité des opérateurs. Cependant, vous pouvez modifier l'ordre d'évaluation en utilisant des parenthèses.
  4. Il existe quatre opérateurs que vous ne pouvez pas surcharger en C++. Ils incluent l'opérateur de résolution de portée (::), l'opérateur de sélection de membres (.), la sélection de membres via un pointeur vers l'opérateur de fonction (.*) et l'opérateur ternaire (?:).

Règles de surcharge de l'opérateur :

Voici les règles de surcharge de l'opérateur :

Comment surcharger l'opérateur :

Exemple 1 :

#include <iostream>   
using namespace std;
class OperatorOverload {
private:
	int x;

public:
	OperatorOverload() : x(10) {}
	void operator ++() {
		x = x + 2;
	}
	void Print() {
		cout << "The Count is: " << x;
		}
};
int main() {
	OperatorOverload ov;
	++ov;   
	ov.Print();
	return 0;
}

Sortie :

Voici une capture d'écran du code :

Explication du code :

  1. Inclure le fichier d'en-tête iostream dans notre code pour utiliser ses fonctions.
  2. Incluez l'espace de noms std dans notre programme pour utiliser ses classes sans l'appeler.
  3. Créez une classe nommée OperatorOverload.
  4. Utilisez le modificateur d'accès privé, qui marque un membre de classe comme accessible en privé.
  5. Créez une variable entière x. Cette variable sera accessible en privé.
  6. Utilisez le modificateur d'accès public, qui marque un membre de classe comme accessible en privé.
  7. Utilisez un constructeur de classe pour initialiser la variable x à 10.
  8. Surcharger la signification de l'opérateur ++.
  9. L'opérateur incrémentera la valeur de la variable x de 2.
  10. Fin de la section sur la surcharge des opérateurs. L'opérateur a reçu un nouveau nom.
  11. Appel de la fonction Print().
  12. Imprime la valeur de la variable x à côté d'un autre texte sur la console lorsque la fonction Print() est appelée.
  13. Fin du corps de la fonction Print().
  14. Fin du corps de la classe.
  15. Appelez la fonction main(). La logique du programme doit être ajoutée dans cette fonction.
  16. Créez une instance de la classe OperatorOverload nommée ov.
  17. Cela appellera la fonction void operator ++().
  18. Utilisez la position de la classe OperatorOverload pour appeler la fonction Print().
  19. La fonction doit renvoyer une valeur en cas de réussite.
  20. Fin du corps de la fonction main().

Exemple 2 :

#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 :

Voici une capture d'écran du code :

Explication du code :

  1. Inclure le fichier d'en-tête iostream dans notre programme afin d'utiliser ses fonctions.
  2. Inclure l'espace de noms std dans notre programme afin d'utiliser ses classes sans l'appeler.
  3. Créez une classe nommée TestClass. Le { marque le début du corps de la classe.
  4. Utilisez le modificateur d'accès privé pour marquer les variables comme privées, ce qui signifie qu'elles ne sont accessibles qu'à partir de la classe.
  5. Définissez deux variables entières, réelle et supérieure.
  6. Utilisez le modificateur d'accès public pour marquer le constructeur comme public, ce qui signifie qu'il sera accessible même en dehors de la classe.
  7. Création du constructeur de classe et initialisation des variables.
  8. Initialiser la valeur de la variable real.
  9. Initialiser la valeur de la variable over.
  10. Fin du corps du constructeur.
  11. Remplacer la signification de l'opérateur +.
  12. Créez le résultat du type de données de type TestClass.
  13. Utilisez l'opérateur + avec les nombres complexes. Cette ligne ajoutera la partie réelle d'un nombre à la partie réelle d'un autre nombre.
  14. Utilisez l'opérateur + avec les nombres complexes. Cette ligne ajoutera la partie imaginaire d'un nombre à la partie imaginaire d'un autre nombre.
  15. Le programme renverra la valeur de la variable result en cas d'exécution réussie.
  16. Fin de la définition de la nouvelle signification de l'opérateur +, c'est-à-dire la surcharge.
  17. Appelez la méthode print().
  18. Imprimer le nouveau nombre complexe après ajout sur la console.
  19. Fin du corps de la fonction print().
  20. Fin du corps de la classe TestClass.
  21. Appeler la fonction main().
  22. Transmettre les valeurs des parties réelles et complexes à ajouter. La première partie de c1 sera ajoutée à la première partie de c2, c'est-à-dire 9+4. La deuxième partie de c1 sera ajoutée à la deuxième partie de c, c'est-à-dire 5+3.
  23. Exécution d'une opération à l'aide de l'opérateur + surchargé et stockage du résultat dans la variable c3.
  24. Imprimer la valeur de la variable c3 sur la console.
  25. Fin du corps de la fonction main().

Résumé :


Langue C

  1. Passage d'un tableau à une fonction en programmation C++
  2. Surcharge d'opérateur Python
  3. Opérateurs en C++ avec exemple :qu'est-ce que c'est, les types et les programmes
  4. Boucle do…while C++ avec exemples
  5. Pointeurs C++ avec exemples
  6. Type de données Char C++ avec exemples
  7. Structure C++ avec exemple
  8. std ::list en C++ avec exemple
  9. Fonctions C++ avec exemples de programmes