Wenn du auf deutsch Fragen stellen willst, wäre de.comp.lang.iso-c++
geeigneter.
Zeh Mau wrote:
Virtuelle Konstruktoren
Ich habe gerade gelesen:
Konstruktoren dürfen nicht virtuell deklariert werden,
da beim Erzeugen von Objekten immer die tatsächliche Klasse
bereits zur Compilezeit festgelegt wird.
Leider verstehe ich diesen Satz nicht und wende mich deshalb an
die Newsgroup!
Kann mir bitte jemand erklären, was die obige Erklärung besagt?
<< die tatsächliche Klasse liegt zur Compilezeit fest bei der
Erzeugung
von Objekten >>
Nun, wenn du ein Objekt erzeugst, gibst du dabei immer die konkrete Klasse
an. Wie soll das auch anders gehen? Virtuelle Memberfunktionen suchen zur
Laufzeit die Klasse des Objekts raus, für das sie aufgerufen werden, damit
die richtige Implementation ausgeführt wird. Wenn du das Objekt erzeugen
willst, ist aber logischerweise noch keins da. Daher kann der Compiler auch
die Klasse nicht automatisch erkennen. Du kannst du dem Compiler
schließlich nicht sagen: "Erzeuge mal ein Objekt von der Klasse, der dieses
Objekt dann nachher angehören wird". Du mußt ihm explizit die Klasse sagen,
und daher ergeben virtuelle Konstruktoren gar keinen Sinn.