copy constructor bei der Interface und noch einen copy constructor bei der konkrete Class warum?
-
hallo Zusammen,
es geht um C++.
bei einen Interface und der konkrete class wird einen Copy construct benuzt.
Mir ist nicht klar warum? und was gewinnt man damit?Danke in voraus
-
@sami sagte in copy constructor bei der Interface und noch einen copy constructor bei der konkrete Class warum?:
es geht um C++.
Warum fragst du dann bei C++/CLI?
bei einen Interface und der konkrete class wird einen Copy construct benuzt.
Es gibt in C++ kein Interface.
-
@manni66
@manni66 sagte in copy constructor bei der Interface und noch einen copy constructor bei der konkrete Class warum?:
Es gibt in C++ kein Interface.
ich weiss, dass in C++ keine Interface im Sinne von Java gibt aber es geht ungefähr in die gleiche Richtung.
Es geht um eine obere Klasse, die von denen mehrere klasse erben (z.B Tier(als Interface) und Hund(erbt von Tier)...)
-
Ich verstehe an deiner Frage nicht:
- Wieso das für dich überhaupt eine Frage ist. Wieso sollte so ein Fall nicht vorkommen? Wenn meine Eltern nicht-trivale Kopierkonstruktoren haben, heißt das ja nicht, dass ich nicht auch welche brauchen könnte.
- Wie du denkst, dass wir diese Frage ohne Code beantworten können. Manche Klassen brauchen Kopierkonstruktoren, manche nicht. Man kann jeweils am konkreten Einzelfall erklären, wieso eine Klasse so etwas brauchen könnte oder nicht. Die Erklärung hat aber nicht damit zu tun, ob die Klasse Teil einer Vererbungshierarchie ist oder nicht. Siehe dazu auch Punkt 1.
-
Die Frage ist sehr allgemein gehalten.
Ich möchte nur wissen was gewinnt man, wenn es bei der Interface und der Konkrete class eine copy Constructor benutzt wird?danke in voraus
-
@sami sagte in copy constructor bei der Interface und noch einen copy constructor bei der konkrete Class warum?:
Ich möchte nur wissen was gewinnt man
Das der Code funktioniert!?
("Manche Klassen brauchen Kopierkonstruktoren, manche nicht")
-
@jockelx sagte in copy constructor bei der Interface und noch einen copy constructor bei der konkrete Class warum?:
Das der Code funktioniert!?
("Manche Klassen brauchen Kopierkonstruktoren, manche nicht")Warum sollte nicht funktionieren?
Es tut schon was tun muss.
Es handelt sich um eine bestehenden Projekt und versuche gerade zu verstehen.
Was giwinnt man daraus nicht mehr und nicht weniger?
-
Die Frage ist: "Was gewinnt man durch ein Copy Constructor"???
Ganz einfach: Du kannst einfach Kopien diener Objekte anlegen. Wird zum Beispiel benötigt, wenn du ein Funktion "by-Value" aufrufen möchtest. Oder du möchtest eventuell generische Funktionen oder Container aus anderen Bibliotheken verwenden, die vorraussetzen, dass es einen Copy Ctor gibt.Es gibt aber Fälle in denen man das nicht braucht, oder sogar vermeiden möchte. Dann gibt es halt keinen Copy Ctor.
-
Einen Copy Constructor benötigt ggf. eine Klasse, wenn diese zum Beispiel einen Zeigern auf ein Objekt hat. Ohne Copy Constructor würde der Zeiger kopiert werden. Will man aber für die Kopie ein eigenes neues Objekt, kann man dieses im Copy Constructor kopieren bzw. erstellen und dann zuweisen.
Btw. Es wird i.d.R. dann auch ein Zuweisungsoperator benötigt.
-
@sami sagte in copy constructor bei der Interface und noch einen copy constructor bei der konkrete Class warum?:
Es handelt sich um eine bestehenden Projekt und versuche gerade zu verstehen.
Dann zeig doch mal! Entweder hat es einen Grund, oder nicht. Das könne wir dir dann am konkreten Beispiel erklären. Allgemein kann man nur rumeiern, dass man manchmal Kopierkonstruktoren braucht und manchmal nicht, und dass dies nicht im geringsten damit zu tun hat, ob die Klasse von irgendetwas erbt oder nicht.