C++

Overbelasting van C++-operator

Overbelasting van C++-operator
Dit artikel biedt een gids voor overbelasting van de operator in C++. Overbelasting door operators is een handige en krachtige functie van de programmeertaal C++. C++ maakt overbelasting van de meeste ingebouwde operators mogelijk. In deze zelfstudie zullen we verschillende voorbeelden gebruiken om het overbelastingsmechanisme van de operator te demonstreren.

Wat is Operator?

Een operator is een symbool dat de compiler aangeeft een bepaalde bewerking uit te voeren. Er zijn bijvoorbeeld verschillende soorten operators in C ++, zoals rekenkundige operators, logische operators, relationele operators, toewijzingsoperators, bitsgewijze operators en meer.

Wat is overbelasting van de operator??

Met de C++-taal kunnen programmeurs speciale betekenissen geven aan operators. Dit betekent dat u de operator voor door de gebruiker gedefinieerde gegevenstypen in C . opnieuw kunt definiëren++. "+" wordt bijvoorbeeld gebruikt om ingebouwde gegevenstypen toe te voegen, zoals int, float, enz. Om twee soorten door de gebruiker gedefinieerde gegevens toe te voegen, moet de operator "+" worden overbelast.

Syntaxis voor overbelasting door operators

C++ biedt een speciale functie genaamd "operator" voor overbelasting van de operator. Het volgende is de syntaxis voor overbelasting door operators:

klasse voorbeeldKlasse


Openbaar:
returnType operator symbool (argumenten)



;

Hier is "operator" een trefwoord en "symbool" is de operator die we willen overbelasten.

Voorbeelden

Nu u het algemene concept van overbelasting door operators begrijpt, laten we een aantal werkende voorbeeldprogramma's voor u doornemen om dit idee concreter te begrijpen. We zullen de volgende voorbeelden behandelen:

  1. Voorbeeld 1: Unary Operator Overloading (1)
  2. Voorbeeld 2: Unary Operator Overload (2)
  3. Voorbeeld 3: Binaire operator overbelasting
  4. Voorbeeld 4: relationele operator overbelasting Operator

Voorbeeld 1: Unary Operator Overloading (1)

In dit voorbeeld laten we zien hoe een unaire operator kan worden overbelast in C++. We hebben de klasse "Square_Box" en de openbare functies "operator ++ ()" en "operator ++ (int)" gedefinieerd om zowel de prefix- als de postfix-increment-operators te overbelasten. In de functie "main()" hebben we het object "mySquare_Box1" gemaakt.We hebben vervolgens de prefix- en postfix-increment-operators toegepast op het object "mySquare_Box1" om de overbelasting van de unaire operator aan te tonen.

#include
namespace std; gebruiken;
klasse Square_Box

privaat:
vlotter lengte;
vlotterbreedte;
vlotterhoogte;
openbaar:
Vierkante doos()
Square_Box (float l, float w, float h)

lengte = l;
breedte = b;
hoogte = uur;

// Operator overbelasting - "++" prefix operator
ongeldige operator ++ ()

lengte++;
breedte++;
hoogte++;

// Overbelasting operator - "++" postfix-operator
ongeldige operator ++ (int)

lengte++;
breedte++;
hoogte++;

ongeldige uitgang()

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

;
int hoofd()

Square_Box mijnSquare_Box1(3.0, 5.0, 6.0);
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.uitvoer();
mySquare_Box1++;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.uitvoer();
++mijnVierkante_Box1;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.uitvoer();
retourneer 0;

Voorbeeld 2: Unary Operator Overload (2)

Dit is een ander voorbeeld waarin we zullen laten zien hoe een unaire operator kan worden overbelast in C++. We hebben de klasse "Square_Box" en de openbare functies "operator - ()" en "operator - (int)" gedefinieerd om zowel de prefix- als de postfix-decrement-operatoren te overbelasten. In de functie "main()" hebben we het object "mySquare_Box1" gemaakt. Vervolgens hebben we de prefix- en postfix-decrement-operatoren toegepast op het object "mySquare_Box1".

#include
namespace std; gebruiken;
klasse Square_Box

privaat:
vlotter lengte;
vlotterbreedte;
vlotterhoogte;
openbaar:
Vierkante doos()
Square_Box (float l, float w, float h)

lengte = l;
breedte = b;
hoogte = uur;

// Operator overbelasting - "--" prefix operator
ongeldige operator -- ()

lengte--;
breedte--;
hoogte--;

// Overbelasting operator - "--" postfix-operator
ongeldige operator -- (int)

lengte--;
breedte--;
hoogte--;

ongeldige uitgang()

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

;
int hoofd()

Square_Box mijnSquare_Box1(3.0, 5.0, 6.0);
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.uitvoer();
mySquare_Box1--;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.uitvoer();
--mijnVierkante_Box1;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.uitvoer();
retourneer 0;

Voorbeeld 3: Binaire operator overbelasting

Nu zullen we kijken naar een voorbeeld van overbelasting van binaire operatoren:. De syntaxis voor overbelasting van binaire operatoren zal enigszins verschillen van overbelasting van unaire operatoren. In dit voorbeeld zullen we de operator "+" overbelasten om twee objecten "Square_Box" toe te voegen.

#include
namespace std; gebruiken;
klasse Square_Box

privaat:
vlotter lengte;
vlotterbreedte;
vlotterhoogte;
openbaar:
Vierkante doos()
Square_Box (float l, float w, float h)

lengte = l;
breedte = b;
hoogte = uur;

// Overbelasting operator - "+" operator
Square_Box-operator + (const Square_Box& obj)

Square_Box-temp;
temp.lengte = lengte + obj.lengte;
temp.breedte = breedte + obj.breedte;
temp.hoogte = hoogte + obj.hoogte;
retourtemperatuur;

ongeldige uitgang()

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

;
int hoofd()

Square_Box mijnSquare_Box1(3.0, 5.0, 6.0), mySquare_Box2(2.0, 3.0, 5.0), resultaat;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.uitvoer();
cout << "Dimensions of mySquare_Box2 = " << endl;
mySquare_Box2.uitvoer();
resultaat = mySquare_Box1 + mySquare_Box2;
cout << "Dimensions of resultant square box = " << endl;
resultaat.uitvoer();
retourneer 0;

Voorbeeld 4: relationele operator overbelasting Operator

Nu zullen we kijken naar een voorbeeld van relationele operator overbelasting. De syntaxis voor overbelasting van de relationele operator is net als die van de binaire operator overbelasting. In dit voorbeeld zullen we de "<” and “>” operatoren om toe te passen op de “Square_Box” objecten.

#include
namespace std; gebruiken;
klasse Square_Box

privaat:
vlotter lengte;
vlotterbreedte;
vlotterhoogte;
openbaar:
Vierkante doos()
Square_Box (float l, float w, float h)

lengte = l;
breedte = b;
hoogte = uur;

// Overbelasting operator - "<" operator
bool-operator < (const Square_Box& obj)

als (lengte) < obj.length)
retourneer waar;
anders
onwaar retourneren;

// Overbelasting operator - ">" operator
bool operator > (const Square_Box& obj)

if(lengte > obj.lengte)
retourneer waar;
anders
onwaar retourneren;

ongeldige uitgang()

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

;
int hoofd()

Square_Box mijnSquare_Box1(2.0, 3.0, 5.0), mySquare_Box2(4.0, 6.0, 8.0);
bool resultaat;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.uitvoer();
cout << "Dimensions of mySquare_Box2 = " << endl;
mySquare_Box2.uitvoer();
resultaat = mySquare_Box1 < mySquare_Box2;
cout << "mySquare_Box1 < mySquare_Box2 = " << result < mySquare_Box2;
cout < mySquare_Box2 = " << result << endl;
retourneer 0;

Conclusie

C++ is een universele en flexibele programmeertaal die veel wordt gebruikt in verschillende domeinen. Deze programmeertaal ondersteunt zowel compile-time als runtime polymorfisme. Dit artikel heeft u laten zien hoe u overbelasting van de operator kunt uitvoeren in C++. Dit is een zeer nuttige functie van C++ die de ontwikkelaar wat extra moeite kost om de operator voor overbelasting te definiëren, maar het maakt het leven zeker gemakkelijker voor de gebruiker van de klas.

Hoe de linker- en rechtermuisknop op Windows 10 pc te veranderen
Het is nogal een norm dat alle computermuisapparaten ergonomisch zijn ontworpen voor rechtshandige gebruikers. Maar er zijn muisapparaten beschikbaar ...
Emuleer muisklikken door te zweven met Clickless Mouse in Windows 10
Het gebruik van een muis of toetsenbord in de verkeerde houding of overmatig gebruik kan leiden tot veel gezondheidsproblemen, waaronder spanning, car...
Voeg muisbewegingen toe aan Windows 10 met deze gratis tools
In de afgelopen jaren zijn computers en besturingssystemen sterk geëvolueerd. Er was een tijd dat gebruikers opdrachten moesten gebruiken om door best...