C++ Warum wird der Konstruktor nicht aufgerufen?



  • Danke für deine Antwort!



  • Swordfish schrieb:

    Wozu den default c-tor überhaupt hinschreiben, wenn er nichts anderes tut, als der Compiler sowieso für dich machen würde?

    Sobald man eigene Konstruktoren definiert bekommt man keinen Default-Ctor mehr vom Compiler.
    Und der Default-Ctor vom Compiler würde in diesem Fall hier auch genau nichts machen. Wohingegen seiner integer mit 0 initialisiert.

    Und da ich mir sicher bin, dass du das beides weisst, bin ich jetzt etwas verwirrt 😕



  • hustbaer schrieb:

    Und da ich mir sicher bin, dass du das beides weisst, bin ich jetzt etwas verwirrt 😕

    Schon. Nur hab' ich scheinbar den Knick, bei jedem meiner Posts mindestens einmal kräftig ins Klo greifen zu müssen. Solche Sachen weiß ich zwar, lass mich aber im Fall des Falles vom Compiler dran erinnern anstatt bewusst eigenes Wissen auszugraben. 😕



  • hustbaer schrieb:

    Sobald man eigene Konstruktoren definiert bekommt man keinen Default-Ctor mehr vom Compiler.
    Und der Default-Ctor vom Compiler würde in diesem Fall hier auch genau nichts machen. Wohingegen seiner integer mit 0 initialisiert.

    Das stimmt. Aber ist dieser

    C_IntClass(int i = 0): integer{i} {}
    

    in diesem Fall nicht genau so gut, wie ein Default-Ctor?



  • Der compilergenerierte default c-tor initialisiert value types nicht.



  • C_IntClass& operator=(const C_IntClass& s){
     
    C_IntClass t(s);
    integer = t.integer;
     
    return *this;
     
    }
    

    Das sieht ja mal kacke aus.
    Warum nicht gleich integer = s.integer; ?



  • Warum nicht gleich using C_IntClass = int; ?


  • Mod

    genutzter name schrieb:

    C_IntClass& operator=(const C_IntClass& s){
     
    C_IntClass t(s);
    integer = t.integer;
     
    return *this;
     
    }
    

    Das sieht ja mal kacke aus.
    Warum nicht gleich integer = s.integer; ?

    Da hat vermutlich jemand mal was vom "Copy-Swap Idiom" gehört, aber nicht so recht verstanden.



  • SeppJ schrieb:

    mal was vom "Copy-Swap Idiom" gehört, aber nicht so recht verstanden.

    wenns so ist ... es für eine Klasse, die einen int kapselt, hinzuschreiben is auch fad 😕



  • Belli schrieb:

    Das stimmt. Aber ist dieser

    C_IntClass(int i = 0): integer{i} {}
    

    in diesem Fall nicht genau so gut, wie ein Default-Ctor?

    Ne. Dieser ist besser.


Anmelden zum Antworten