Aufrufen des Basisklassenkonstruktors
Während der Arbeit mit der Vererbung in Java können Sie den Superklassenkonstruktor mit super() aufrufen. Dies wirft die Frage auf, wie die gleiche Funktionalität in C erreicht werden kann.
Das Problem tritt insbesondere auf, wenn von einer C-Basisklasse mit einem nicht standardmäßigen Konstruktor geerbt wird. Der Compiler warnt häufig vor dem Fehlen eines geeigneten Standardkonstruktors.
Lösung: Verwendung der Initialisierungsliste des Konstruktors
Im Gegensatz zu Java verfügt C nicht über eine explizite super() Syntax zum Aufrufen des Basisklassenkonstruktors. Stattdessen geben Sie den Aufruf in der Initialisierungsliste des Konstruktors der abgeleiteten Klasse an. Die Initialisierungsliste erscheint vor dem Hauptteil des Konstruktors und wird zum Initialisieren von Mitgliedsvariablen verwendet.
Betrachten Sie beispielsweise die folgende Basisklasse mit einem Konstruktor, der ein Zeichenarray als Argument verwendet:
class BaseClass { public: BaseClass(char *name); ... };
Um den Basisklassenkonstruktor in der abgeleiteten Klasse aufzurufen, fügen Sie den Aufruf in die Initialisierungsliste ein:
class Foo : public BaseClass { public: Foo() : BaseClass("asdf") {} };
Dadurch wird sichergestellt, dass der Basisklassenkonstruktor vorhanden ist wird aufgerufen, bevor eine andere Mitgliedsinitialisierung erfolgt. Da die Konstruktoren der Basisklasse Argumente akzeptieren, müssen diese in der Initialisierungsliste angegeben werden, bevor Mitgliedsvariablen initialisiert werden.
Das obige ist der detaillierte Inhalt vonWie rufe ich einen Basisklassenkonstruktor in C auf?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!