C ++ - Operatorüberlastung

C ++ - Operatorüberlastung
Dieser Artikel enthält einen Leitfaden zur Überlastung des Bedieners in C++. Die Überladung des Bedieners ist eine nützliche und leistungsstarke Funktion der C ++ - Programmiersprache. C ++ ermöglicht die Überlastung der meisten integrierten Operatoren. In diesem Tutorial werden wir mehrere Beispiele verwenden, um den Operator -Überlastungsmechanismus zu demonstrieren.

Was ist Operator?

Ein Bediener ist ein Symbol, das dem Compiler angibt, einen bestimmten Vorgang auszuführen. Beispielsweise gibt es in C ++ verschiedene Arten von Operatoren, wie z.

Was ist Operator -Überlastung??

Die C ++ - Sprache ermöglicht es den Programmierern, den Betreibern besondere Bedeutungen zu geben. Dies bedeutet, dass Sie den Bediener für benutzerdefinierte Datentypen in C neu definieren können++. Zum Beispiel wird „+“ verwendet, um integrierte Datentypen wie int, float usw. hinzuzufügen. Um zwei Arten von benutzerdefinierten Daten hinzuzufügen, müssen der Operator „+“ überlastet werden.

Syntax für die Überlastung des Bedieners

C ++ bietet eine spezielle Funktion namens „Operator“ für die Überlastung des Bedieners. Das Folgende ist die Syntax für die Überlastung des Bedieners:

Klasse SampleClass


Öffentlich:
Operatorsymbol des Rückkehrs (Argumente)



;

Hier ist „Operator“ ein Schlüsselwort, und „Symbol“ ist der Bediener, den wir überladen möchten.

Beispiele

Nachdem Sie das Gesamtkonzept der Überlastung des Bedieners verstehen, lassen Sie uns ein paar Arbeitsbeispielprogramme durchlaufen, damit Sie diese Idee konkreter verstehen können. Wir werden die folgenden Beispiele abdecken:

  1. Beispiel 1: Überlastung des Unary Operator (1)
  2. Beispiel 2: Überlastung des Unary Operator (2)
  3. Beispiel 3: Überlastung von Binäroperator
  4. Beispiel 4: Überlastung des relationalen Operators

Beispiel 1: Überlastung des Unary Operator (1)

In diesem Beispiel werden wir zeigen, 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 das Präfix als auch die Postfix -Increment -Operatoren zu überladen. In der Funktion „main ()“ haben wir das Objekt „mysquare_box1) erstellt.”Wir haben dann das Präfix- und Postfix -Inkrement -Operatoren auf das Objekt„ MySquare_Box1 “angewendet, um die Überladung des Unary -Bedieners zu demonstrieren.

#enthalten
Verwenden von Namespace STD;
Klasse Square_box

Privatgelände:
Schwimmerlänge;
Schwimmerbreite;
Schwimmhöhe;
öffentlich:
Quatratische Kiste()
Square_box (float l, float w, float h)

Länge = l;
Breite = w;
Höhe = H;

// Bediener -Überladen - "++" Präfix -Operator
Hohlraumoperator ++ ()

Länge ++;
Breite ++;
Höhe ++;

// Operator Overloading - "++" Postfix -Operator
Hohlraumoperator ++ (int)

Länge ++;
Breite ++;
Höhe ++;

Hohlraumausgang ()

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.Ausgang();
mysquare_box1 ++;
Cout << "Dimensions of mySquare_Box1 = " << endl;
Mysquare_Box1.Ausgang();
++mysquare_box1;
Cout << "Dimensions of mySquare_Box1 = " << endl;
Mysquare_Box1.Ausgang();
Rückkehr 0;

Beispiel 2: Überlastung des Unary Operator (2)

Dies ist ein weiteres Beispiel, in dem wir demonstrieren, 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 das Präfix- als auch das Postfix -Dekrementbetreiber zu überladen. In der Funktion "main ()" haben wir das Objekt "mysquare_box1" erstellt. Wir haben dann das Präfix- und Postfix -Decrement -Operatoren auf das Objekt „MySquare_Box1“ angewendet.

#enthalten
Verwenden von Namespace STD;
Klasse Square_box

Privatgelände:
Schwimmerlänge;
Schwimmerbreite;
Schwimmhöhe;
öffentlich:
Quatratische Kiste()
Square_box (float l, float w, float h)

Länge = l;
Breite = w;
Höhe = H;

// Operator Overloading-"-" Präfixbetreiber
Hohlbetreiber - ()

Länge--;
Breite--;
Höhe--;

// Operator Overloading-"-" Postfix-Operator
Hohlbetreiber - (int)

Länge--;
Breite--;
Höhe--;

Hohlraumausgang ()

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.Ausgang();
mysquare_box1--;
Cout << "Dimensions of mySquare_Box1 = " << endl;
Mysquare_Box1.Ausgang();
--mysquare_box1;
Cout << "Dimensions of mySquare_Box1 = " << endl;
Mysquare_Box1.Ausgang();
Rückkehr 0;

Beispiel 3: Überlastung von Binäroperator

Jetzt werden wir uns ein Beispiel für die Überlastung von Binäroperator ansehen. Die Syntax für die Überlastung des Binärbetreibers unterscheidet sich etwas von der Überlastung des Unary -Bedieners. In diesem Beispiel überladen wir den "+" -Preiber, um zwei "Square_Box" -Fjekte hinzuzufügen.

#enthalten
Verwenden von Namespace STD;
Klasse Square_box

Privatgelände:
Schwimmerlänge;
Schwimmerbreite;
Schwimmhöhe;
öffentlich:
Quatratische Kiste()
Square_box (float l, float w, float h)

Länge = l;
Breite = w;
Höhe = H;

// Bediener -Überladen - "+" Operator
Square_box Operator + (const square_box & obj)

Square_box temp;
Temperatur.Länge = Länge + OBJ.Länge;
Temperatur.Breite = Breite + OBJ.Breite;
Temperatur.Höhe = Höhe + OBJ.Höhe;
Temperatur zurückgeben;

Hohlraumausgang ()

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.Ausgang();
Cout << "Dimensions of mySquare_Box2 = " << endl;
Mysquare_Box2.Ausgang();
result = mysquare_box1 + mysquare_box2;
Cout << "Dimensions of resultant square box = " << endl;
Ergebnis.Ausgang();
Rückkehr 0;

Beispiel 4: Überlastung des relationalen Operators

Jetzt werden wir uns ein Beispiel für die Überlastung des relationalen Operators ansehen. Die Syntax für die Überlastung des Relationskreises ähnelt genau der des Überladens des Binärbetreibers. In diesem Beispiel überladen wir die "" Operatoren, um sie auf die Objekte "square_box" zu bewerben.

#enthalten
Verwenden von Namespace STD;
Klasse Square_box

Privatgelände:
Schwimmerlänge;
Schwimmerbreite;
Schwimmhöhe;
öffentlich:
Quatratische Kiste()
Square_box (float l, float w, float h)

Länge = l;
Breite = w;
Höhe = H;

// Bedienerüberladen - "<" operator
Bool -Bediener < (const Square_Box& obj)

if (Länge < obj.length)
zurückkehren;
anders
falsch zurückgeben;

// Bediener -Überladen - ">" Bediener
Bool -Operator> (const square_box & obj)

if (Länge> obj.Länge)
zurückkehren;
anders
falsch zurückgeben;

Hohlraumausgang ()

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);
bool Ergebnis;
Cout << "Dimensions of mySquare_Box1 = " << endl;
Mysquare_Box1.Ausgang();
Cout << "Dimensions of mySquare_Box2 = " << endl;
Mysquare_Box2.Ausgang();
result = mysquare_box1 < mySquare_Box2;
Cout << "mySquare_Box1 < mySquare_Box2 = " << result < mySquare_Box2;
Cout < mySquare_Box2 = " << result << endl;
Rückkehr 0;

Abschluss

C ++ ist eine allgemeine und flexible Programmiersprache, die in einer Vielzahl von Domänen häufig verwendet wird. Diese Programmiersprache unterstützt sowohl Kompilierungszeit- als auch Laufzeitpolymorphismus. Dieser Artikel hat Ihnen gezeigt, wie Sie die Operatorüberlastung in C durchführen können++. Dies ist eine sehr nützliche Funktion von C ++, die dem Entwickler zusätzliche Anstrengungen ergibt.