C++ Copy-Construktor

Hallo,

Mir ist aufgefallen, das ich keine Copy-Construktoren und keine Methode zu &-Operatoren in meinen Klassen habe.

  1. Müssen die beiden Methoden private oder public sein?
  2. Wie kann ich im Copy-Contruktor einen Vector kopieren und wie kann ich einen Pointer auf eine Klasse kopieren. Da gibt es sicher einen Befehl. Die Beispiele im Netz beziehen sich immer auf Arrays. In meinem C++ Buch steht nur lapidar: Um Copy Construktoren brauchen sie sich i.A. nicht zu kümmern.
    PS: Ich kenne mich nicht so gut mit C++ aus. Daher wären kurze Beispiele mit Sourcecode nicht schlecht.

Danke schön Chris

Hallo,

einen Copy- und Assignment-Operator gibt es default-maessig in jeder Class, genauso wie den Standard Constructor sowie Destructor. Die beiden Operatoren kopieren aber nur komponentenweise. D.h., members die pointer auf Objects sind, werden auch kopiert, aber nur der zeiger, aber nicht das Object, das dahinter steht. Dafür muss man dann in C++ selber sorgen.

Wie diese realisert werden und auch z.B. der &-Operator, haengt von der Construction Deiner Class ab. Operatoren und Konstruktoren koennen sowohl private, protected oder public sein. Das haengt vom Design ab und was man dem Anwender der Klasse erlauben will.

Z.B. ist der Konstruktor eines Singleton-Pattern immer strengsten private, da die Klasse selbst für die verwaltung der nur einen Instanz zu sorgen hat. Man kann ihn auch protected machen, allerdings ist eine Ableitungs-Hierachie hier nicht ganz einfach. Bei Vererbung ist bei operatoren aufzupassen, damit in abgeleiteten klassen keine Inkonsitenzen erzeugt werden. Des weiteren ist bei Konstruktoren mit default-parameters das schuesselwort explicit zu verwenden, damit implizites casten ausgeschlossen wird. Nur opeartors die virtual sind dürfen überschrieben werden und es ist darauf zu achten, ob man überschreibt, überdeckt oder überlädt. Der Destruktor sollte in jeder class immer virtual sein.

Ciao