Surcharge de l'opérateur C ++

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

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

Un opérateur est un symbole qui indique le compilateur pour 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 bit.

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

La langue C ++ permet aux programmeurs de donner des significations spéciales 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 de l'opérateur

C ++ fournit une fonction spéciale appelée «opérateur» pour la surcharge de l'opérateur. Ce qui suit est la syntaxe pour la surcharge de l'opérateur:

classe Sampleclass


Public:
Symbole de l'opérateur de retour (arguments)



;

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

Exemples

Maintenant que vous comprenez le concept global de surcharge de l'opérateur, passons en revue quelques programmes d'exemples de travail pour que vous compreniez cette idée plus concrètement. Nous couvrirons les exemples suivants:

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

Exemple 1: surcharge de l'opérateur unaire (1)

Dans cet exemple, 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 à la fois le préfixe et les opérateurs d'incrément post-fixe. Dans la fonction «main ()», nous avons créé l'objet, «mysquare_box1."Nous avons ensuite appliqué les opérateurs d'incrément préfixe et post-fixe à l'objet" mysquare_box1 "pour démontrer la surcharge de l'opérateur unaire.

#inclure
Utilisation de Namespace Std;
Classe Square_box

privé:
longueur de flotteur;
largeur de flotteur;
hauteur flottante;
public:
Boîte carrée()
Square_box (float l, float w, float h)

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

// Surcharge de l'opérateur - opérateur de préfixe "++"
void opérateur ++ ()

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

// Surcharge de l'opérateur - opérateur postfix "++"
void opérateur ++ (int)

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

VOID OUTPUT ()

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

;
int main()

Carré_box mysquare_box1 (3.0, 5.0, 6.0);
couter << "Dimensions of mySquare_Box1 = " << endl;
mysquare_box1.sortir();
mysquare_box1 ++;
couter << "Dimensions of mySquare_Box1 = " << endl;
mysquare_box1.sortir();
++mysquare_box1;
couter << "Dimensions of mySquare_Box1 = " << endl;
mysquare_box1.sortir();
retour 0;

Exemple 2: surcharge de l'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, «Opérateur - ()» et «Opérateur - (int)», pour surcharger à la fois les opérateurs de décrément préfixe et post-fixe. Dans la fonction «main ()», nous avons créé l'objet «mysquare_box1». Nous avons ensuite appliqué les opérateurs de décréments préfixes et postfixes à l'objet "MySquare_Box1".

#inclure
Utilisation de Namespace Std;
Classe Square_box

privé:
longueur de flotteur;
largeur de flotteur;
hauteur flottante;
public:
Boîte carrée()
Square_box (float l, float w, float h)

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

// Surcharge de l'opérateur - "-" Opérateur de préfixe
opérateur void - ()

longueur--;
largeur--;
hauteur--;

// Surcharge de l'opérateur - "-" Opérateur postfix
opérateur void - (int)

longueur--;
largeur--;
hauteur--;

VOID OUTPUT ()

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

;
int main()

Carré_box mysquare_box1 (3.0, 5.0, 6.0);
couter << "Dimensions of mySquare_Box1 = " << endl;
mysquare_box1.sortir();
mysquare_box1--;
couter << "Dimensions of mySquare_Box1 = " << endl;
mysquare_box1.sortir();
--mysquare_box1;
couter << "Dimensions of mySquare_Box1 = " << endl;
mysquare_box1.sortir();
retour 0;

Exemple 3: surcharge de l'opérateur binaire

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

#inclure
Utilisation de Namespace Std;
Classe Square_box

privé:
longueur de flotteur;
largeur de flotteur;
hauteur flottante;
public:
Boîte carrée()
Square_box (float l, float w, float h)

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

// Surcharge de l'opérateur - opérateur "+"
Square_box Operator + (const square_box & obj)

Square_box temp;
temp.longueur = longueur + obj.longueur;
temp.largeur = largeur + obj.largeur;
temp.hauteur = hauteur + obj.hauteur;
Tempère de retour;

VOID OUTPUT ()

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

;
int main()

Carré_box mysquare_box1 (3.0, 5.0, 6.0), Mysquare_box2 (2.0, 3.0, 5.0), résultat;
couter << "Dimensions of mySquare_Box1 = " << endl;
mysquare_box1.sortir();
couter << "Dimensions of mySquare_Box2 = " << endl;
mysquare_box2.sortir();
result = mysquare_box1 + mysquare_box2;
couter << "Dimensions of resultant square box = " << endl;
résultat.sortir();
retour 0;

Exemple 4: surcharge de l'opérateur relationnel

Maintenant, nous allons examiner un exemple de surcharge d'opérateur relationnel. La syntaxe pour la surcharge de l'opérateur relationnel est comme celle de la surcharge de l'opérateur binaire. Dans cet exemple, nous surchargerons les opérateurs «» pour s'appliquer aux objets «square_box».

#inclure
Utilisation de Namespace Std;
Classe Square_box

privé:
longueur de flotteur;
largeur de flotteur;
hauteur flottante;
public:
Boîte carrée()
Square_box (float l, float w, float h)

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

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

si (longueur < obj.length)
Retour Vrai;
autre
retourne false;

// Surcharge de l'opérateur - ">" Opérateur
Bool Operator> (const square_box & obj)

si (longueur> obj.longueur)
Retour Vrai;
autre
retourne false;

VOID OUTPUT ()

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

;
int main()

Carré_box mysquare_box1 (2.0, 3.0, 5.0), Mysquare_box2 (4.0, 6.0, 8.0);
Résultat bool;
couter << "Dimensions of mySquare_Box1 = " << endl;
mysquare_box1.sortir();
couter << "Dimensions of mySquare_Box2 = " << endl;
mysquare_box2.sortir();
Résultat = mysquare_box1 < mySquare_Box2;
couter << "mySquare_Box1 < mySquare_Box2 = " << result < mySquare_Box2;
couter < mySquare_Box2 = " << result << endl;
retour 0;

Conclusion

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