operator = mithilfe des copy ctor ausdrücken, oder andersrum?
-
Was ich mich gefragt habe, wenn ich einen Copy Constructor definiert habe, kann ich diesen einsetzen um ihn in der implementation von operator= zu nutzen? Oder andersherum den operator= für den Copy ctor?
Wird in der Regel der copy ctor mithilfe vom überladenen operator= umgesetzt? Also erst default constructor (falls vorhanden) und dann operator=?
Was ist mit Klassen, die keinen default ctor haben? Muss man dann redundant zwei mal einen ähnlichen code schreiben?
-
Klar geht das. Üblicherweise wird der copy-ctor benutzt, um den
=-Operatorzu definieren. Nennt sich Copy/Swap-Idiom:
http://en.wikibooks.org/wiki/More_C%2B%2B_Idioms/Copy-and-swap
-
Begriff war mir neu, was gelernt. Danke

-
Seikilos schrieb:
Wird in der Regel der copy ctor mithilfe vom überladenen operator= umgesetzt? Also erst default constructor (falls vorhanden) und dann operator=?
Was ist mit Klassen, die keinen default ctor haben? Muss man dann redundant zwei mal einen ähnlichen code schreiben?Das geht eh nicht - anders als in Java kann in C++ ein Konstruktor nicht einen anderen aufrufen.
-
pumuckl schrieb:
Seikilos schrieb:
Wird in der Regel der copy ctor mithilfe vom überladenen operator= umgesetzt? Also erst default constructor (falls vorhanden) und dann operator=?
Was ist mit Klassen, die keinen default ctor haben? Muss man dann redundant zwei mal einen ähnlichen code schreiben?Das geht eh nicht - anders als in Java kann in C++ ein Konstruktor nicht einen anderen aufrufen.
Noch nicht.. :p