C++

Surcharge d'opérateur C++

Surcharge d'opérateur C++
Cet article fournit un guide sur la surcharge des opérateurs en C++. La surcharge d'opérateurs est une fonctionnalité utile et puissante du langage de programmation C++. C++ permet de surcharger la plupart des opérateurs intégrés. Dans ce tutoriel, nous utiliserons plusieurs exemples pour démontrer le mécanisme de surcharge d'opérateur.

Qu'est-ce que l'opérateur?

Un opérateur est un symbole qui indique au compilateur d'effectuer une opération particulière. Par exemple, il existe différents types d'opérateurs en C++, tels que les opérateurs arithmétiques, les opérateurs logiques, les opérateurs relationnels, les opérateurs d'affectation, les opérateurs au niveau du bit, etc.

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

Le langage C++ permet aux programmeurs de donner des significations particulières aux opérateurs. Cela signifie que vous pouvez redéfinir l'opérateur pour les types de données définis par l'utilisateur en C++. Par exemple, "+" est utilisé pour ajouter des types de données intégrés, tels que int, float, etc. Pour ajouter deux types de données définies par l'utilisateur, il est nécessaire de surcharger l'opérateur « + ».

Syntaxe pour la surcharge d'opérateur

C++ fournit une fonction spéciale appelée « opérateur » pour la surcharge d'opérateurs. Voici la syntaxe pour la surcharge d'opérateur :

exemple de classeClasse


Publique:
symbole de l'opérateur returnType (arguments)



 ;

Ici, « opérateur » est un mot-clé et « symbole » est l'opérateur que nous voulons surcharger.

Exemples

Maintenant que vous comprenez le concept général de la surcharge d'opérateurs, passons en revue quelques exemples de programmes fonctionnels pour que vous compreniez cette idée plus concrètement. Nous couvrirons les exemples suivants :

  1. Exemple 1 : surcharge d'opérateur unaire (1)
  2. Exemple 2 : surcharge d'opérateur unaire (2)
  3. Exemple 3 : surcharge d'opérateur binaire
  4. Exemple 4 : Surcharge de l'opérateur relationnel

Exemple 1 : surcharge d'opérateur unaire (1)

Dans cet exemple, nous allons montrer comment un opérateur unaire peut être surchargé en C++. Nous avons défini la classe « Square_Box » et les fonctions publiques « operator ++ () » et « operator ++ (int) », pour surcharger à la fois les opérateurs d'incrémentation préfixe et postfixe. Dans la fonction « main() », nous avons créé l'objet « mySquare_Box1.” Nous avons ensuite appliqué les opérateurs d'incrémentation préfixe et postfixe à l'objet « mySquare_Box1 » pour démontrer la surcharge de l'opérateur unaire.

#inclure
en utilisant l'espace de noms std ;
classe Square_Box

privé:
longueur du flotteur ;
largeur du flotteur ;
hauteur du flotteur ;
Publique:
Boîte carrée()
Square_Box(float l, float w, float h)

longueur = l;
largeur = w;
hauteur = h;

// Surcharge d'opérateur - Opérateur de préfixe "++"
opérateur vide ++ ()

longueur++ ;
largeur++;
hauteur++;

// Surcharge d'opérateur - Opérateur suffixe "++"
opérateur vide ++ (int)

longueur++ ;
largeur++;
hauteur++;

sortie vide()

cout << "\tLength = " << length << endl;
cout << "\tWidth = " << width << endl;
cout << "\tHeight = " << height << endl;
cout << endl;

 ;
int main()

Square_Box mySquare_Box1(3.0, 5.0, 6.0);
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.production();
mySquare_Box1++;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.production();
++mySquare_Box1;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.production();
renvoie 0 ;

Exemple 2 : surcharge d'opérateur unaire (2)

Ceci est un autre exemple dans lequel nous montrerons comment un opérateur unaire peut être surchargé en C++. Nous avons défini la classe « Square_Box » et les fonctions publiques « operator - () » et « operator - (int) » pour surcharger les opérateurs de décrémentation préfixe et postfixe. Dans la fonction « main() », nous avons créé l'objet « mySquare_Box1 ». Nous avons ensuite appliqué les opérateurs de décrémentation préfixe et postfixe à l'objet « mySquare_Box1 ».

#inclure
en utilisant l'espace de noms std ;
classe Square_Box

privé:
longueur du flotteur ;
largeur du flotteur ;
hauteur du flotteur ;
Publique:
Boîte carrée()
Square_Box(float l, float w, float h)

longueur = l;
largeur = w;
hauteur = h;

// Surcharge d'opérateur - Opérateur de préfixe "--"
opérateur vide -- ()

longueur--;
largeur--;
la taille--;

// Surcharge d'opérateur - Opérateur suffixe "--"
opérateur vide -- (int)

longueur--;
largeur--;
la taille--;

sortie vide()

cout << "\tLength = " << length << endl;
cout << "\tWidth = " << width << endl;
cout << "\tHeight = " << height << endl;
cout << endl;

 ;
int main()

Square_Box mySquare_Box1(3.0, 5.0, 6.0);
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.production();
mySquare_Box1--;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.production();
--mySquare_Box1;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.production();
renvoie 0 ;

Exemple 3 : surcharge d'opérateur binaire

Maintenant, nous allons regarder un exemple de surcharge d'opérateur binaire. La syntaxe pour la surcharge d'opérateur binaire sera quelque peu différente de la surcharge d'opérateur unaire. Dans cet exemple, nous allons surcharger l'opérateur « + » pour ajouter deux objets « Square_Box ».

#inclure
en utilisant l'espace de noms std ;
classe Square_Box

privé:
longueur du flotteur ;
largeur du flotteur ;
hauteur du flotteur ;
Publique:
Boîte carrée()
Square_Box(float l, float w, float h)

longueur = l;
largeur = w;
hauteur = h;

// Surcharge d'opérateur - Opérateur "+"
Opérateur Square_Box + (const Square_Box& obj)

Square_Box temp;
température.longueur = longueur + obj.longueur;
température.largeur = largeur + obj.largeur;
température.hauteur = hauteur + obj.la taille;
température de retour ;

sortie vide()

cout << "\tLength = " << length << endl;
cout << "\tWidth = " << width << endl;
cout << "\tHeight = " << height << endl;
cout << endl;

 ;
int main()

Square_Box mySquare_Box1(3.0, 5.0, 6.0), mySquare_Box2(2.0, 3.0, 5.0), résultat ;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.production();
cout << "Dimensions of mySquare_Box2 = " << endl;
mySquare_Box2.production();
résultat = mySquare_Box1 + mySquare_Box2;
cout << "Dimensions of resultant square box = " << endl;
résultat.production();
renvoie 0 ;

Exemple 4 : Surcharge de l'opérateur relationnel

Maintenant, nous allons regarder un exemple de surcharge d'opérateur relationnel. La syntaxe de la surcharge de l'opérateur relationnel est identique à celle de la surcharge de l'opérateur binaire. Dans cet exemple, nous allons surcharger le "<” and “>” opérateurs à appliquer aux objets “Square_Box”.

#inclure
en utilisant l'espace de noms std ;
classe Square_Box

privé:
longueur du flotteur ;
largeur du flotteur ;
hauteur du flotteur ;
Publique:
Boîte carrée()
Square_Box(float l, float w, float h)

longueur = l;
largeur = w;
hauteur = h;

// Surcharge d'opérateur - "<" operator
opérateur booléen < (const Square_Box& obj)

si (longueur < obj.length)
renvoie vrai ;
autre
renvoie faux ;

// Surcharge d'opérateur - Opérateur ">"
opérateur booléen > (const Square_Box& obj)

if(longueur > obj.longueur)
renvoie vrai ;
autre
renvoie faux ;

sortie vide()

cout << "\tLength = " << length << endl;
cout << "\tWidth = " << width << endl;
cout << "\tHeight = " << height << endl;
cout << endl;

 ;
int main()

Square_Box mySquare_Box1(2.0, 3.0, 5.0), mySquare_Box2(4.0, 6.0, 8.0);
résultat booléen ;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.production();
cout << "Dimensions of mySquare_Box2 = " << endl;
mySquare_Box2.production();
result = mySquare_Box1 < mySquare_Box2;
cout << "mySquare_Box1 < mySquare_Box2 = " << result < mySquare_Box2;
cout < mySquare_Box2 = " << result << endl;
renvoie 0 ;

Conclusion

C++ est un langage de programmation polyvalent et flexible qui est largement utilisé dans une variété de domaines. Ce langage de programmation prend en charge le polymorphisme à la compilation et à l'exécution. Cet article vous a montré comment effectuer une surcharge d'opérateur en C++. C'est une fonctionnalité très utile de C++ qui ajoute un effort supplémentaire au développeur pour définir l'opérateur de surcharge, mais cela facilite définitivement la vie de l'utilisateur de la classe.

Comment booster les FPS sous Linux?
FPS signifie Images par seconde. La tâche du FPS est de mesurer la fréquence d'images dans les lectures vidéo ou les performances de jeu. En termes si...
Meilleurs jeux de laboratoire d'applications Oculus
Si vous êtes propriétaire d'un casque Oculus, vous devez être au courant du chargement latéral. Le chargement latéral est le processus d'installation ...
Top 10 des jeux à jouer sur Ubuntu
La plate-forme Windows a été l'une des plates-formes dominantes pour les jeux en raison du pourcentage énorme de jeux qui se développent aujourd'hui p...