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 =-Operator zu 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


Anmelden zum Antworten