C++ : Konstruktor einer Abgel. Klasse "füttern"

The_Real_Poti

Grünschnabel
Hallo,

ich habe ein C++ Programm mit einer Basisklasse und 2 abgeleiteten Klassen, die jeweils eine zusätzliche Elementvariable haben.
Im Hauptprogramm habe ich eine Eingabe der benötigten Parameter zum Initialsieren eines neuen Objekts. Diese werden in temp. Variablen gespeichert und sollen dann an den jew. Konstruktor weitergegeben werden.
Die Objekte sollen dyanamisch d.h. mit pointer = new Basisklasse (Parameterliste) bzw. pointer = new Abgel.Klasse (Parameterliste) angelegt werden und dabei mit der Parameterliste gleich initialsiert werden.
Bei der Basisklasse funktioniert das auch super. Ich versteh nur die Syntax für das Aufrufen des Konstr. der Abgel. Klassen nicht, da ja zuerst der Konstr. der Basisklasse aufgerufen wird und dann erst der der Abgel. Klasse. Kann mir jemanden die Syntax eindeutig erklären bzw. posten, damit zuerst die Elemente der Basisklasse (die ja vererbt wurden) und dann das einzelne zusätzliche der Abgel. Klassen initialsiert werden.

Oder verstehe ich da irgendwas falsch. Ich bin grad am Anfang des C++ - Lernprozesses. Würde mich sehr freuen wenn mir jemand weiterhelfen könnte.

Danke
 
Das geht automatisch, du hast es doch richtig beschrieben. Wenn du den Konstruktor einer Klasse aufrufst die von einer anderen Klasse abgeleitet ist (der Basisklasse), so wird im Konstruktor der abgeleiteten Klasse der Standardkonstruktor der Basisklasse aufgerufen und dann erst der eigene sinnbildlich gesprochen. Möchtest du nicht den Standardkonstruktor aufrufen lassen so musst du das explizit angeben, dementsprechend im Konstruktor der abgeleiteten Klasse den Basiskonstruktor deiner Wahl aufrufen. Hier ein Beispiel:
C++:
class Fahrzeug
{
  public:
    Fahrzeug(): reifen(0) {};                 // Standardkonstruktor
    Fahrzeug(int R):reifen(R) {};         // Parameter Konstruktor 
  private:
    int reifen;
};

class Auto : public Fahrzeug
{
  public:
    Auto();
    Auto(int R, int T): Fahrzeug(R), tueren(T) {};
  private:
    int tueren; 
};

@Lesen hier

mfg ;)
 
Zurück