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 :
- Exemple 1 : surcharge d'opérateur unaire (1)
- Exemple 2 : surcharge d'opérateur unaire (2)
- Exemple 3 : surcharge d'opérateur binaire
- 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.
#inclureen 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 ».
#inclureen 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 ».
#inclureen 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”.
#inclureen 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.