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 seinerinteger
mit0
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 seinerinteger
mit0
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 gleichinteger = s.integer;
?
-
Warum nicht gleich
using C_IntClass = int;
?
-
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 gleichinteger = 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.