Überladen von Operatoren in C ++





перегрузка операторов c++, перегрузка операторов с++, Überlast c ++ Operationen, перегрузBetreiber Überlastung c ++

Operator in einem gewissen Grad eine Überlastung, der kreative Prozess. Mit seiner Hilfe, Programmierer es möglich ist, es einfacher zu machen für sich selbst Code schreiben, und andere – Verbesserung der Lesbarkeit. beispielsweise, wenn eine Aktion hat viele Male im Code wiederholt werden,, und nur mühsam den dauerhaften Einsatz für diese spezielle Funktion – Sie können einen Operator für diese überlasten. Lassen Sie uns, im Code ist es notwendig, oft Linie zu kombinieren (einen String in einen String-Klasse Element anhängen). Es kann auf unterschiedliche Weise gestaltet sein. Aber wir tun so, auf String-Verkettung ist dann passiert, wenn wir verwenden, um die Betreiber + :

Das Ergebnis sollte eine Änderung in der Zelle sein, str. Er und ein zweizeiliges: “Der Name unserer Website PureCodeCpp”.

Während wir uns natürlich nicht überlasten das sind +, Compiler “schwören”, da wir summieren sich die Zahlen nicht, und die Linie. Aber jetzt lernen wir, wie ihm zu sagen,, wie zu handeln, wenn wir fragen, einen Nicht-Standard-Aktion auszuführen, Verwendung +.

Erste Praxis. Definieren Sie in Beispiel 4 Linien. Als nächstes sammeln eine Anekdote, sie in der richtigen Reihenfolge in einer Zeile kombiniert.

Lassen Sie uns nicht über die offensichtlichen sprechen – gehen die meisten Überlastung zu untersuchen. On line 15 Verfahren sehen wir einen Prototyp einer Klasse Überlast: Leere Operator +(verkohlen*); Dieses Verfahren führt dazu, dass der Bediener arbeiten + so, dass wir wollen, (wie definieren wir unten). Um eine Überlastung jeden Betreiber wollen Sie das Schlüsselwort zu verwenden, Operator. In diesem Fall, Methode nicht die Werte zurückgeben, so Leere, Weitere Schlüsselwort Operator und der Bediener selbst +. Es nimmt diese Methode auf einem String-Zeiger.

Linien 20 – 23 Es ist die Definition der Methode der Betreiber Überlastung. (Wie eine Klassenmethode zu definieren, ist in dem Artikel beschrieben Klassen in C ++) In ihm, mit Hilfe der Funktion strcat_s(str, s); Linie erzeugt einen Datensatz s Ende der Leitung str (Klasse Element). Acts so – sobald der Code die Bedienungsperson trifft + die sich hinter der Linie befinden wird – Methode wird Überladen von Operatoren genannt und diese Linie wird auf das Zeichen auf sie übertragen werden,.

Die Hauptfunktion, stellten wir fest, zufällig 4 Linien. Zeigen Sie sie auf dem Bildschirm (Linien 39 – 42). unten, in Zeile 44, erklärt Objekt Witz. Zum Zeitpunkt seiner Entstehung, Klasse-Designer, reinigen Klasse Element str von “Müll” und es wird bereit sein, Linien aufzeichnen. Befolgen Sie diese einfachen Schritte (Linien 46 – 49) – überladenen + notieren Sie alle Zeilen in einem (str) in der richtigen Reihenfolge.

Ergebnis:

перегрузка операторов c++,  Betreiber Überlastung c ++

alles geschah. Noch, wie in der Folge ersichtlich, für numerische Daten Operator + korrekt geladen. Daher kann es sicher für die arithmetischen Operationen in dem Code verwendet werden, – Sie Compiler “verstehen”. Ein weiterer Punkt, – Überlastung Operator wirkt nur innerhalb der Klasse, , für die bestimmt wird,. Wenn wir definieren eine andere Klasse (Überlastung 2 beispielsweise) aber nicht überlastet die Bediener für ihn, der Versuch, zu verwenden, + Zum Schreiben ergibt sich eine Zeichenfolge irgendwo in einem Fehler.




Es gibt eine Reihe von Ausnahmen in C ++ – nicht alle Betreiber können überlastet werden. Hier ist eine Liste:

перегрузка операторов c++,  Betreiber Überlastung c ++

Und ein wenig Theorie:

– Betreiber Überlastung kann nicht die Priorität und die Reihenfolge der Operationen ändern;

– keine Gelegenheit, mit Überlast, Erstellen neue Symbole für Operationen;

– Binäre Operatoren können keine unäre Operation und umgekehrt zu überschreiben, verwendet werden, – einstellige außer Kraft setzen nicht binäre Operation.

Überladen von Operatoren, natürlich, “Sache” interessant. Nur nicht bekommen weggetragen. Verwenden Sie es nur, wenn es unbedingt notwendig – wenn es wirklich mehr Komfort bringen, Sie sparen Zeit und positive Auswirkungen auf die Lesbarkeit des Codes. Versuchen Sie, um eine Überlastung Betreiber so, es ist so nah wie möglich an ihren logischen Wert. Das heißt, es ist nicht notwendig, Linien zu falten, Betreiber Überlastung , beispielsweise. Es ist logisch, zu verwenden +. ich stelle fest,, dass viele Programmierer mögen Betreiber Überlastung nicht, wie einige allzu gern, und es wird schwierig, den Code zu lesen. So wiegen sorgfältig das Für und Wider, Entscheidung über die Betreiber Überlastung.

Ich plane, in Zukunft einen weiteren Artikel über Betreiber Überlastung zu schreiben, wo die Beispiele möchte ich zeigen, wie zu überlasten ++ Zuwachs, Dekrement, == Gleichheit, = Zuordnung neu und löschen. Wenn ich könnte nicht vergessen :)

Es gibt Videos zum Thema. Autor MyNekis.

Zur Unterstützung unserer Website – klicken Sie auf das Sparschwein und wählen Sie eine beliebige bequeme Weise.

Newsletter neue Lektionen über die Programmierung:

Überladen von Operatoren in C ++
3.7 (73.33%) 3 Stimmen

Ein Gedanke zu "Überladen von Operatoren in C ++

  1. >> beispielsweise, wenn eine Aktion hat viele Male im Code wiederholt werden,, und nur mühsam den dauerhaften Einsatz für diese spezielle Funktion - kann der Bediener für diese überlasten.

    Im Allgemeinen ist es wahr,, aber eine Überlastung – Es ist eine schicke Möglichkeit, sich in den Fuß zu schießen (und sogar etwas Kameraden schießen). Sehr gefährliche Sache. Es kann sowohl die Lesbarkeit des Codes verbessern, und all die Beute.

    Bei Myers waren die Regeln zu diesem Thema (wenn sie nicht erfüllen – In der Hölle werden Sie gezwungen, ihren Code alle zu halten 7 Kreise). beispielsweise:
    – Zuweisungsoperator sollte einen Verweis auf * zurückkommen;
    – in dem Zuweisungsoperator zu überprüfen samoprisvaivaniya;
    – dort tselyyel über die neue Überlastung und löschen, aber IMHO 99% Sterbliche einfach nicht brauchen, diese Operatoren zu berühren;
    – deklarieren Funktion, Nicht-Mitglieder, wenn Typumwandlung muss auf alle Parameter angewendet werden,.
    Nun, eine Reihe von anderen Regeln (ein paar Bücher).
    Ich biete die Aufmerksamkeit auf die letzte Regel in der Liste zu zahlen. Sie haben den Bediener beschrieben, die arbeiten für

    Witz + str1;
    Aber es funktioniert nicht für
    str1 + Witz;

    Aber es wäre schön, wenn der Bediener in beiden Richtungen funktionieren würde. Es ist genug, um es kein Mitglied der Klasse zu machen (normale Funktion). Es ist nicht schwer? )

Hinterlasse eine Antwort

Deine Email-Adresse wird nicht veröffentlicht. erforderliche Felder sind markiert *