Ist die Kopie über Class a = *this; zulässig?
-
Heyho,
der Titel klingt etwas merkwürdig, aber mir viel nichts besseres ein es so kompakt wie möglich zu schreiben.
Grad schreib ich an einer Belegarbeit für die Uni und hab dort eine Klasse mit einem Attribut
std::vector<std::vector<int> >.Meine Klasse ist so aufgebaut das sie als Imutable-Object fungieren soll, nun hab ich eine Methode die ein neues Objekt der Klasse zurückgibt(das neue Objekt wird natürlich vorher in der Methode manipuliert) und in dieser mache ich eine Kopie
âla
Klasse k = *this;Hier ist doch ein Copy-Ctor nicht von nöten da die vectoren das Kopieren ja "alleine" hinbekommen und ich auch keinerlei Speicherallokation durchführe.
Ist meine Annahme korrekt?
-
Natürlich ist ein CopyCtor notwendig, da dieser hier aufgerufen wird. Die Frage ist ob Du selber einen implementieren musst, oder auf den compilergenerierten vertrauen kannst. Wenn Du nur einen
vectorspeicherst, sollte der compilergenerierte ausreichen. Kannst ja aber mal deine KLasse posten, das sagt viel mehr als diese ganzen Wörter...
-
Ok das dort ein Copy-Ctor von nöten ist, war mir auch klar
Mir gings jetzt vorangig um den vom Compiler genierten Automatismus.Danke brotbernd.
-
Der vector<vector<int>> ist kein Problem.
Problematisch wäre aber z.B. wenn du Zeiger oder Iteratoren "in" diesen Vektor in der Klasse hast. Oder halt sonstwas was bei einer Kopie angepasst werden muss.