Was ist Operator?
Ein Operator ist ein Symbol, das dem Compiler anzeigt, eine bestimmte Operation auszuführen. In C++ gibt es beispielsweise verschiedene Arten von Operatoren, wie arithmetische Operatoren, logische Operatoren, relationale Operatoren, Zuweisungsoperatoren, bitweise Operatoren und mehr.
Was ist eine Operatorüberlastung??
Die Sprache C++ ermöglicht es Programmierern, Operatoren besondere Bedeutungen zu geben. Das bedeutet, dass Sie den Operator für benutzerdefinierte Datentypen in C . neu definieren können++. „+“ wird beispielsweise verwendet, um integrierte Datentypen wie int, float usw. hinzuzufügen. Um zwei Arten von benutzerdefinierten Daten hinzuzufügen, muss der Operator „+“ überladen werden.
Syntax für das Überladen von Operatoren
C++ bietet eine spezielle Funktion namens „Operator“ zum Überladen von Operatoren. Die Syntax für das Überladen von Operatoren lautet wie folgt:
KlassenprobeKlasse…
Öffentlichkeit:
returnType-Operatorsymbol (Argumente)
…
…
;
Hier ist „operator“ ein Schlüsselwort und „symbol“ der Operator, den wir überladen möchten.
Beispiele
Nachdem Sie nun das Gesamtkonzept der Operatorüberlastung verstanden haben, lassen Sie uns ein paar funktionierende Beispielprogramme durchgehen, damit Sie diese Idee konkreter verstehen können. Wir werden die folgenden Beispiele behandeln:
- Beispiel 1: Unäre Operatorüberlastung (1)
- Beispiel 2: Überladen des unären Operators (2)
- Beispiel 3: Überladen von binären Operatoren
- Beispiel 4: Überladen von relationalen Operatoren
Beispiel 1: Unäre Operatorüberlastung (1)
In diesem Beispiel zeigen wir, wie ein unärer Operator in C . überladen werden kann++. Wir haben die Klasse „Square_Box“ und die öffentlichen Funktionen „operator ++ ()“ und „operator ++ (int)“ definiert, um sowohl die Präfix- als auch die Postfix-Inkrementierungsoperatoren zu überladen. In der Funktion „main()“ haben wir das Objekt „mySquare_Box1“ erstellt.“ Wir haben dann die Präfix- und Postfix-Inkrement-Operatoren auf das „mySquare_Box1“-Objekt angewendet, um die Überladung der unären Operatoren zu demonstrieren.
#einschließenVerwenden von Namespace-Std;
Klasse Square_Box
Privatgelände:
Schwimmerlänge;
Schwimmerbreite;
Schwimmerhöhe;
Öffentlichkeit:
Quatratische Kiste()
Square_Box(float l, float w, float h)
Länge = l;
Breite = w;
Höhe = h;
// Operatorüberladung - "++" Präfixoperator
Leeroperator ++ ()
Länge++;
Breite++;
Höhe++;
// Operator-Überladung - "++" Postfix-Operator
void-Operator ++ (int)
Länge++;
Breite++;
Höhe++;
Leere Ausgabe ()
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.Ausgabe();
mySquare_Box1++;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.Ausgabe();
++mySquare_Box1;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.Ausgabe();
0 zurückgeben;
Beispiel 2: Überladen des unären Operators (2)
Dies ist ein weiteres Beispiel, in dem wir zeigen werden, wie ein unärer Operator in C . überladen werden kann++. Wir haben die Klasse "Square_Box" und die öffentlichen Funktionen "operator - ()" und "operator - (int)" definiert, um sowohl die Präfix- als auch die Postfix-Dekrementierungsoperatoren zu überladen. In der Funktion „main()“ haben wir das Objekt „mySquare_Box1“ erstellt. Wir haben dann die Präfix- und Postfix-Dekrementierungsoperatoren auf das „mySquare_Box1“-Objekt angewendet.
#einschließenVerwenden von Namespace-Std;
Klasse Square_Box
Privatgelände:
Schwimmerlänge;
Schwimmerbreite;
Schwimmerhöhe;
Öffentlichkeit:
Quatratische Kiste()
Square_Box(float l, float w, float h)
Länge = l;
Breite = w;
Höhe = h;
// Operatorüberladung - "--" Präfixoperator
void-Operator --()
Länge--;
Breite--;
Höhe--;
// Operatorüberladung - "--" Postfix-Operator
void-Operator -- (int)
Länge--;
Breite--;
Höhe--;
Leere Ausgabe ()
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.Ausgabe();
mySquare_Box1--;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.Ausgabe();
--mySquare_Box1;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.Ausgabe();
0 zurückgeben;
Beispiel 3: Überladen von binären Operatoren
Nun sehen wir uns ein Beispiel für das Überladen binärer Operatoren an. Die Syntax für das Überladen binärer Operatoren unterscheidet sich etwas von der Überladung unärer Operatoren. In diesem Beispiel werden wir den Operator „+“ überladen, um zwei „Square_Box“-Objekte hinzuzufügen.
#einschließenVerwenden von Namespace-Std;
Klasse Square_Box
Privatgelände:
Schwimmerlänge;
Schwimmerbreite;
Schwimmerhöhe;
Öffentlichkeit:
Quatratische Kiste()
Square_Box(float l, float w, float h)
Länge = l;
Breite = w;
Höhe = h;
// Operator-Überladung - "+"-Operator
Square_Box-Operator + (const Square_Box& obj)
Square_Box-Temp;
temp.Länge = Länge + Objekt.Länge;
temp.Breite = Breite + Objekt.Breite;
temp.Höhe = Höhe + Objekt.Höhe;
Rücklauftemperatur;
Leere Ausgabe ()
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), Ergebnis;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.Ausgabe();
cout << "Dimensions of mySquare_Box2 = " << endl;
mySquare_Box2.Ausgabe();
Ergebnis = mySquare_Box1 + mySquare_Box2;
cout << "Dimensions of resultant square box = " << endl;
Ergebnis.Ausgabe();
0 zurückgeben;
Beispiel 4: Überladen von relationalen Operatoren
Nun sehen wir uns ein Beispiel für das Überladen von relationalen Operatoren an. Die Syntax für das Überladen relationaler Operatoren ist genau wie die des Überladens von binären Operatoren. In diesem Beispiel überladen wir die „<” and “>”-Operatoren, die auf die „Square_Box“-Objekte angewendet werden sollen.
#einschließenVerwenden von Namespace-Std;
Klasse Square_Box
Privatgelände:
Schwimmerlänge;
Schwimmerbreite;
Schwimmerhöhe;
Öffentlichkeit:
Quatratische Kiste()
Square_Box(float l, float w, float h)
Länge = l;
Breite = w;
Höhe = h;
// Operatorüberladung - "<" operator
bool-Operator < (const Square_Box& obj)
wenn (Länge < obj.length)
true zurückgeben;
sonst
falsch zurückgeben;
// Operatorüberladung - Operator ">""
bool-Operator > (const Square_Box& obj)
if(Länge > obj.Länge)
true zurückgeben;
sonst
falsch zurückgeben;
Leere Ausgabe ()
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);
boolesches Ergebnis;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.Ausgabe();
cout << "Dimensions of mySquare_Box2 = " << endl;
mySquare_Box2.Ausgabe();
Ergebnis = mySquare_Box1 < mySquare_Box2;
cout << "mySquare_Box1 < mySquare_Box2 = " << result < mySquare_Box2;
cout < mySquare_Box2 = " << result << endl;
0 zurückgeben;
Fazit
C++ ist eine universelle und flexible Programmiersprache, die in einer Vielzahl von Domänen weit verbreitet ist. Diese Programmiersprache unterstützt sowohl Kompilierzeit- als auch Laufzeitpolymorphismusmorph. In diesem Artikel wurde gezeigt, wie Sie in C . eine Operatorüberladung durchführen++. Dies ist eine sehr nützliche Funktion von C++, die für den Entwickler zusätzlichen Aufwand bei der Definition des Operators für das Überladen bedeutet, aber dem Benutzer der Klasse das Leben auf jeden Fall erleichtert.