Für Konstruktoren und Destruktoren gilt die Regel:
- Destruktoren können bei Bedarf virtuell sein.
- Konstruktoren können niemals virtuell sein.
Ein Konstruktor dient dazu ein Objekt mit bekanntem Typ zu initialisieren. Der Typ ist dabei immer statisch - zur Übersetzungszeit - bekannt.
Objekte werden ja nur auf Veranlassung des Programms erzeugt und dabei wird der exakte Typ angegeben.
Bei der Vernichtung von Objekten ist die Lage etwas anders. Räumt man Objekte mit weg, dann erfolgt der Zugriff über einen Zeiger. Der Zeiger kann dabei formal auf ein Objekt der Basisklasse, tatsächlich aber auf ein Objekt einer abgeleiteten Klasse zeigen. Zur Übersetzungszeit ist im Allgemeinen nicht bekannt, auf was er tatsächlich zeigt.
|