Die Deppenaddition



  • 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.


Anmelden zum Antworten