[gelöst] Überladen des ++ Operators (Prä-/Postfix)


  • Mod

    CStoll schrieb:

    @volkard: Ist es dir auch schon aufgefallen? JW ist schon lange genug hier verrufen 🕶

    Bisher galt er aber nur als unfähig, nun sind wir schon auf der Stufe wo man annehmen muss, dass er das mit Absicht macht. 😋



  • CStoll schrieb:

    Dann sollte man ihm als nächstes beibringen, daß es bei manchen Funktionen nicht sinnvoll ist, Referenzen zurückzugeben 😃

    Wartet, bis C++ einen Garbage-Collector hat. *grusel*



  • Die Art es auszugeben gefällt mir 😮 .



  • Dann merke ich noch an, daß der op++(int) den Nutzcode des op++() dupliziert, statt ihn aufzurufen.


  • Mod

    volkard schrieb:

    Dann merke ich noch an, daß der op++(int) den Nutzcode des op++() dupliziert, statt ihn aufzurufen.

    Ich glaube alle Schwächen im Code auf zu zählen, wird ein lange Liste 😃 . Ich mache mal weiter: Initialisierungsliste.



  • EOutOfResources schrieb:

    Die Art es auszugeben gefällt mir 😮 .

    War klar, dass du daran rummeckerst. Es weiß doch jedes Kind, dass man operator<<(ostream&, MyType) auf jeden Fall schon erklären muss, bevor die erste eigene Ausgabe gemacht werden soll, insbesondere vor operator+ .



  • SeppJ schrieb:

    volkard schrieb:

    Dann merke ich noch an, daß der op++(int) den Nutzcode des op++() dupliziert, statt ihn aufzurufen.

    Ich glaube alle Schwächen im Code auf zu zählen, wird ein lange Liste 😃 . Ich mache mal weiter: Initialisierungsliste.

    int main(void)



  • Michael E. schrieb:

    [...]

    Er soll's lassen wenn er's nicht richtig macht...



  • Michael E. schrieb:

    EOutOfResources schrieb:

    Die Art es auszugeben gefällt mir 😮 .

    War klar, dass du daran rummeckerst. Es weiß doch jedes Kind, dass man operator<<(ostream&, MyType) auf jeden Fall schon erklären muss, bevor die erste eigene Ausgabe gemacht werden soll, insbesondere vor operator+ .

    Für dieses Beispiel erst den op<< bauen. Dann erst den op++ bauen. Das sagt doch nicht, daß man den op<< bauen sollte, bevor man einen op<< benutzt.
    Aber das Beispiel ist eh nicht gut gewählt.
    Eine gute Reihenfolge der Lehrinhalte zurechtzuschuggern ist schon mühsam. Aber da muß ein Autor durch.



  • EOutOfResources schrieb:

    Michael E. schrieb:

    [...]

    Er soll's lassen wenn er's nicht richtig macht...

    Tut mir Leid, aber das ist Blödsinn. Sobald Klassen eingeführt wurden, will ich Member ausgeben. Soll dann direkt operator<< überladen werden? Am besten noch bevor der Leser weiß, was public und private heißen.



  • volkard schrieb:

    Michael E. schrieb:

    EOutOfResources schrieb:

    Die Art es auszugeben gefällt mir 😮 .

    War klar, dass du daran rummeckerst. Es weiß doch jedes Kind, dass man operator<<(ostream&, MyType) auf jeden Fall schon erklären muss, bevor die erste eigene Ausgabe gemacht werden soll, insbesondere vor operator+ .

    Für dieses Beispiel erst den op<< bauen. Dann erst den op++ bauen. Das sagt doch nicht, daß man den op<< bauen sollte, bevor man einen op<< benutzt.
    Aber das Beispiel ist eh nicht gut gewählt.
    Eine gute Reihenfolge der Lehrinhalte zurechtzuschuggern ist schon mühsam. Aber da muß ein Autor durch.

    Die Ausgabe hier ist unabhängig von op++. ➡ s. vorigen Post.



  • Michael E. schrieb:

    EOutOfResources schrieb:

    Michael E. schrieb:

    [...]

    Er soll's lassen wenn er's nicht richtig macht...

    Tut mir Leid, aber das ist Blödsinn. Sobald Klassen eingeführt wurden, will ich Member ausgeben. Soll dann direkt operator<< überladen werden? Am besten noch bevor der Leser weiß, was public und private heißen.

    Tut mir Leid, aber das ist Blödsinn.

    cout << "val1: " << val1++ << '\n';
    cout << "val2: " << ++val2 << '\n';
    

    kann man schon verlangen, damit dieses Beispiel nicht ganz so traurig ist.

    Das hat schon wieder nichts damit zu tun, daß man den op<< von Anfang bauen müßte. Strohmannargument zum zweiten mal.



  • Michael E. schrieb:

    Die Ausgabe hier ist unabhängig von op++. ➡ s. vorigen Post.

    Deswegen kann er ja auch die Reihenfolge so machen, daß der op<< VOR dem op++ gebastelt wird. Wo ist denn das Problem, es wenigsten ein Bißchen ordentlich zu machen, außer, daß man dann ein Buch nicht in einer Nacht in die Tastatur kotzen kann.



  • volkard schrieb:

    Michael E. schrieb:

    Die Ausgabe hier ist unabhängig von op++. ➡ s. vorigen Post.

    Deswegen kann er ja auch die Reihenfolge so machen, daß der op<< VOR dem op++ gebastelt wird. Wo ist denn das Problem, es wenigsten ein Bißchen ordentlich zu machen, außer, daß man dann ein Buch nicht in einer Nacht in die Tastatur kotzen kann.

    Und was ist zu dem Zeitpunkt, bevor Operatorüberladung eingeführt wurde?



  • Michael E. schrieb:

    Und was ist zu dem Zeitpunkt, bevor Operatorüberladung eingeführt wurde?

    Schreibt er's hin und sagt, dass das später behandelt wird.

    volkard schrieb:

    Wo ist denn das Problem, es wenigsten ein Bißchen ordentlich zu machen, außer, daß man dann ein Buch nicht in einer Nacht in die Tastatur kotzen kann.

    Der Satz ist auch eine Signatur wert 👍 .



  • Michael E. schrieb:

    Und was ist zu dem Zeitpunkt, bevor Operatorüberladung eingeführt wurde?

    Arbeitszeit beginn(8,15);
    Arbeitszeit ende(17,30);
    cout << berechneDifferenzInMinuten(ende,beginn) << '\n';
    

    Uups, ich mußte ja gar keine Attribute ausgeben. Eine böse Klasse. Die verkettete Liste und der Vector mußten auch keine Attribute ausgeben. Das Spiel auch nicht. Hmm. Schon komisch. Vielleicht macht man Klassen, die Attribute ausgeben wollen, doch erst nach dem Schreiben eines op<<? Aber da bewegen wir uns schon hinein in die Planung eines Buches, das will ich nicht mir Dir weitertreiben.



  • EOutOfResources schrieb:

    Michael E. schrieb:

    Und was ist zu dem Zeitpunkt, bevor Operatorüberladung eingeführt wurde?

    Schreibt er's hin und sagt, dass das später behandelt wird.

    🙄

    volkard schrieb:

    Arbeitszeit beginn(8,15);
    Arbeitszeit ende(17,30);
    cout << berechneDifferenzInMinuten(ende,beginn) << '\n';
    

    Uups, ich mußte ja gar keine Attribute ausgeben. Eine böse Klasse. Die verkettete Liste und der Vector mußten auch keine Attribute ausgeben. Das Spiel auch nicht. Hmm. Schon komisch. Vielleicht macht man Klassen, die Attribute ausgeben wollen, doch erst nach dem Schreiben eines op<<? Aber da bewegen wir uns schon hinein in die Planung eines Buches, das will ich nicht mir Dir weitertreiben.

    Zuerst Iteratoren zu definieren, ist natürlich noch besser.



  • Michael E. schrieb:

    Zuerst Iteratoren zu definieren, ist natürlich noch besser.

    Wie kommt er jetzt auf Iteratoren?



  • Daneben.



  • volkard schrieb:

    Michael E. schrieb:

    Zuerst Iteratoren zu definieren, ist natürlich noch besser.

    Wie kommt er jetzt auf Iteratoren?

    Irgendwie müssen die Daten ja nach außen kommen. Und Getter wie vector::front, die Referenzen zurückgeben, sind nur selten sinnvoll. Etc. pp.

    Aber bitte, übertrag dein Beispiel auf den Originalcode.

    Edit:

    EOutOfResources schrieb:

    Wahrscheinlich war er durch die Bezeichner " beginn " und " ende " irritiert.

    Heute mal nicht.


Anmelden zum Antworten