Die Deppenaddition
-
TyRoXx schrieb:
...und damit Code-Redundanz erspart?
Ähm...du willst jetzt also tatsächlich behaupten, dass "a = a + b;" in mehr Binärcode resultiert? Autsch...als nächstes lässt du dann wohl auch Kommentare weg, damit die Binaries kleiner werden...
-
WaHoooo schrieb:
TyRoXx schrieb:
...und damit Code-Redundanz erspart?
Ähm...du willst jetzt also tatsächlich behaupten, dass "a = a + b;" in mehr Binärcode resultiert?
Nö
-
WaHoooo schrieb:
TyRoXx schrieb:
...und damit Code-Redundanz erspart?
Ähm...du willst jetzt also tatsächlich behaupten, dass "a = a + b;" in mehr Binärcode resultiert?
Gemeint ist eindeutig, dass man den + Operator für benutzerdefinierte Typen nach Schema F mithilfe des += Operators implementieren kann (
Foo temp(lhs); temp+=rhs; return temp;
), während man umgekehrt die vorhandene Implementation des + nicht vernünftig für einen += verwenden kann.
-
Bashar schrieb:
während man umgekehrt die vorhandene Implementation des + nicht vernünftig für einen += verwenden kann.
*HUST* bitte? Was heißt unvernüftig?
-
Hacker schrieb:
Bashar schrieb:
während man umgekehrt die vorhandene Implementation des + nicht vernünftig für einen += verwenden kann.
*HUST* bitte? Was heißt unvernüftig?
Foo& operator+=(Bar const& bar) { *this = *this + bar; return *this; }
Das ist nicht vernünftig, da sinnlos rumkopiert wird. Außerdem muss das Objekt überhaupt kopierbar sein.
-
TyRoXx schrieb:
//(1) a = a + b; //(2) a += b;
Warum wird fast immer in Beispielen Variante (1) verwendet
Echt?
-
TyRoXx schrieb:
Musst ja nicht antworten.
Musst den Thread ja auch nicht erstellen.
-
Ethon schrieb:
Hacker schrieb:
Bashar schrieb:
während man umgekehrt die vorhandene Implementation des + nicht vernünftig für einen += verwenden kann.
*HUST* bitte? Was heißt unvernüftig?
Foo& operator+=(Bar const& bar) { *this = *this + bar; return *this; }
Das ist nicht vernünftig, da sinnlos rumkopiert wird. Außerdem muss das Objekt überhaupt kopierbar sein.
Foo const operator+(Bar const& bar) { Foo temp(*this); temp += bar; return temp; }
Und hier ist irgendetwas anders?
-
edit: Fairerweise Zitat entfernt.
Hacker schrieb:
Und hier ist irgendetwas anders?
Das ist operator+, da muss sowieso kopiert werden. Es ging um operator+=. Wenn man den mithilfe von operator+ implementiert, dann hat man da eine sinnlose Kopie.
Bringt dir das eigentlich was, bei dem Thema so rumzudiskutieren? Wenn du es besser weißt, dann sag es einfach explizit. Falls nicht -- und es sieht leider danach aus -- lies deinen Scott Meyers oder was man so an Anfängerliteratur heutzutage empfiehlt.
-
Zumal schon der Unterschied erwähnt wurde
-
Hacker schrieb:
Komm. Unnötigere Themen hab ich selten gesehen.
Aber Hauptsache rege mitdiskutieren, wie?
-
Sehe da keine Verbindung zu 'Deppen', Anfänger kennen eben noch nicht alle Befehle.