Comment implémenter la surcharge d'opérateurs en C ++?



Dans cet article, nous examinerons un autre concept orienté objet qui facilite la manipulation des opérateurs. Nous apprendrions la surcharge d'opérateurs en C ++.

Dans cet article, nous explorerons un autre concept orienté objet qui facilite la manipulation des opérateurs. C'est-à-dire que nous entrerions dans les détails de l'opérateur Surcharge en C ++ . Les pointeurs suivants seront traités dans cet article,

Alors, commençons avec cet article sur la surcharge d'opérateurs en C ++.





Surcharge en C ++

Si nous créons deux ou plusieurs membres de la même classe ayant le même nom mais différents en nombre ou en type de paramètre, on parle de surcharge C ++.



En C ++, on peut surcharger:

  • méthodes
  • constructeurs
  • propriétés indexées

C'est parce que ces membres n'ont que des paramètres.

Passez à cet article sur la surcharge d'opérateurs en C ++.



Types de surcharge en C ++

  • Surcharge de fonction
  • Surcharge de l'opérateur

Surcharge - Surcharge d

Passez à cet article sur la surcharge d'opérateurs en C ++.

Pourquoi la surcharge des opérateurs est-elle utilisée?

Les programmes C ++ peuvent être écrits sans la connaissance de la surcharge des opérateurs. Ensuite, les opérations de l'opérateur sont profondément utilisées par les programmeurs pour rendre le programme intuitif. Par exemple,

Nous pouvons remplacer le code comme:

que sont les beans en java
calcul = additionner (diviser (a, b), multiplier (a, b))

Pour l'équation

calcul = (a / b) + (a * b)

La surcharge d'opérateurs fournit un moyen simple et facile pour le développement de nouvelles définitions pour la plupart des opérateurs en C ++. Avec des connaissances suffisantes, nous pouvons presque créer notre propre langage grâce à l'utilisation créative des techniques de surcharge de fonctions et d'opérateurs. Nous pouvons surcharger tous les opérateurs en C ++ sauf les suivants:
● Opérateur d'étendue (: :)
● Opérateur de taille (Sizeof)
● sélecteur de membre (.)
● sélecteur de pointeur de membre (*)
● opérateur ternaire (? :)

Syntaxe de la surcharge de l'opérateur

return_type nom_classe:: opérateur op (liste_arguments) {// corps de la fonction}

Où le type de retour est le type de valeur retourné par la fonction. nom_classe est le nom de la classe.

Passez à cet article sur la surcharge d'opérateurs en C ++.

Implémentation de la surcharge d'opérateurs en C ++

La fonction d'opérateur doit être non statique (fonction membre) ou une fonction amie pour être surchargée. La fonction de surcharge d'opérateur peut être appliquée à une fonction membre si l'opérande de gauche est un objet de cette classe, mais si l'opérande de gauche est différent, alors la fonction de surcharge d'opérateur doit être définie comme une fonction non membre.
La fonction de surcharge de l'opérateur peut devenir une fonction amie si elle nécessite un accès aux membres privés et protégés de la classe. Par exemple, l'opérateur op est une fonction d'opérateur où op est l'opérateur surchargé et l'opérateur est le mot-clé. La surcharge des opérateurs peut être obtenue en implémentant une fonction qui peut être une fonction membre, une fonction non membre ou une fonction amie.

Quelle est la différence entre les fonctions opérateur et les fonctions normales?

php convertir la chaîne en tableau

Les fonctions de l'opérateur sont les mêmes que les fonctions normales. La seule différence est que le nom d'une fonction d'opérateur est toujours un mot-clé d'opérateur suivi du symbole d'opérateur et que les fonctions d'opérateur sont appelées lorsque l'opérateur correspondant est utilisé.

Passez à cet article sur la surcharge d'opérateurs en C ++.

Types d'approches de surcharge

La surcharge de l'opérateur peut être effectuée en utilisant trois approches, elles sont

  • Surcharge de l'opérateur unaire.
  • Surcharge de l'opérateur binaire.
  • Surcharge de l'opérateur binaire à l'aide d'une fonction ami.

Passez à cet article sur la surcharge d'opérateurs en C ++.

Surcharge de l'opérateur unaire

Considérons l’opérateur unaire «-». Un opérateur moins lorsqu'il est utilisé comme unaire, il ne nécessite qu'un seul opérande. Nous savons que cet opérateur change le signe d'un opérande lorsqu'il est appliqué à une variable de données de base. Voyons comment surcharger cet opérateur afin qu'il puisse être appliqué à un objet de la même manière qu'il est appliqué à une variable int ou float. Le moins unaire, lorsqu'il est appliqué à un objet, doit décrémenter chacun de ses éléments de données.

Exemple:

#include using namespace std class Height {public: // Objets membres int feet, inch // Constructeur pour initialiser la valeur de l'objet Height (int f, int i) {feet = f inch = i} // Overloading (-) operator to effectuer une décrémentation // opération de l'Opérateur de void d'objet Hauteur- () {pieds-- pouces-- cout<< 'Feet & Inches after decrement: ' << feet << ' ' ' << inch <

Production:

Explication:
Dans l'exemple ci-dessus, nous surchargeons l'opérateur unaire «-» pour effectuer une décrémentation dans les deux variables de la classe Hauteur. Nous passons deux paramètres au constructeur et enregistrons leurs valeurs en pieds et en pouces. Ensuite, nous définissons la fonction de surcharge de l'opérateur (void operator- ()
) dans lequel les deux variables sont décrémentées d'une position.
Lorsque nous écrivons -h1, il appelle la fonction de surcharge de l'opérateur et décrémente les valeurs passées au constructeur.

Passez à cet article sur la surcharge d'opérateurs en C ++.

Surcharge de l'opérateur binaire

C'est une surcharge d'un opérateur opérant sur deux opérandes. Prenons le même exemple de la classe Height, mais cette fois, ajoutez deux objets Height h1 et h2.

Exemple:

#include using namespace std class Height {public: int feet, inch Height () {feet = 0 inch = 0} Height (int f, int i) {feet = f inch = i} // Surcharge (+) opérateur à effectuer ajout d'un // objet à deux distances en utilisant l'opérateur binaire Hauteur opérateur + (Hauteur & d2) // Appel par référence {// Créer un objet à renvoyer Hauteur h3 // Effectuer l'addition des pieds et des pouces h3.feet = pieds + d2.feet h3. inch = inch + d2.inch // Renvoie l'objet résultant return h3}} int main () {Hauteur h1 (3, 7) Hauteur h2 (6, 1) Hauteur h3 // Utilise l'opérateur surchargé h3 = h1 + h2 cout<< 'Sum of Feet & Inches: ' << h3.feet << ''' << h3.inch << endl return 0 } 

Production:

Explication:
Opérateur Hauteur + (Hauteur & h2), ici renvoie le type de fonction est la classe Hauteur donc il renvoie un objet h3 de la classe Hauteur. Dans la ligne h3 = h1 + h2, h1 appelle la fonction opérateur de ses objets classes et prend h2 comme paramètre, puis on applique h3.feet = feet + d2.feet et h3.inch = inch + d2.inch qui stocke le somme des valeurs des variables pieds et pouces dans les variables associées à l'objet h3.
Lorsque l'instruction «h3 = h1 + h2» invoque la fonction surchargée de l'opérateur, l'objet h1 prend la responsabilité d'appeler la fonction et h2 joue le rôle d'argument qui est passé à la fonction. L'instruction d'invocation ci-dessus est équivalente à h3 = h1.operator + (h2), par conséquent, les données membres de h2 sont accédées directement et les données membres de h2 (qui sont passées comme argument) sont accessibles à l'aide de l'opérateur point.

Règles de surcharge des opérateurs

  • Seuls les opérateurs existants peuvent être surchargés et les nouveaux opérateurs ne peuvent pas être surchargés
  • L'opérateur surchargé doit contenir au moins un opérande du type de données défini par l'utilisateur.
  • Nous n'utilisons pas de fonction ami pour surcharger certains opérateurs. Cependant, les fonctions membres peuvent être utilisées pour surcharger ces opérateurs.
  • Lorsque les opérateurs unaires sont surchargés via une fonction membre, ils n'acceptent aucun argument explicite, mais s'ils sont surchargés par une fonction amie, ils prennent un argument.
  • Lorsque les opérateurs binaires sont surchargés via une fonction membre, ils prennent un argument explicite, et s'ils sont surchargés via une fonction amie, ils prennent deux arguments explicites.

Nous sommes donc arrivés à la fin de cet article sur «La surcharge d’opérateurs en C ++». Si vous souhaitez en savoir plus, consultez la formation Java d'Edureka, une entreprise de formation en ligne de confiance. Edureka Ces cours sont conçus pour vous former aux concepts Java de base et avancés ainsi qu'à divers frameworks Java tels que Hibernate et Spring.

Vous avez une question pour nous? Veuillez le mentionner dans la section commentaires de ce blog et nous vous répondrons dans les plus brefs délais.