Konstruktoren / Vererbung / Klassen



  • Hi,
    Wenn eine Klasse von einer anderen Erbt, werden die geerbten Attribute ja von dem Konstruktor der Basisklasse Initialisiert. Und die Neuen vom Konstruktor der entsprechenden Klasse. Wie sieht dazu die Syntax aus?
    Welchen Sinn hat es dem Konstruktor Referenzen zu übergeben? Sinnvoller währe doch z.b. Person(string const &name, string const &alter);

    #include <iostream>
    
    using namespace std;
    
    class Person{
    public:
    // Konstruktor
    Person(string &name, string &alter){
                  name = name;
                  alter = alter;
                  }
    string name;
    string alter;
    };
    
    class Student: public Person{
    public:
    // Gegeben ist der Konstruktor
    // Doch wie sieht die definition aus? 
    Student(string &name, string &alter, int nr);
    int nr;
    };
    


  • Hallo,

    In der abgeleiteten Klasse wird nur der default-Konstruktor der Basisklasse aufgerufen (sofern vorhanden). Bei deinem Aufbau mußt du den Konstruktor der Basisklasse in der Initialisierungsliste schon selbst aufrufen.
    und ja, es sollte schon const std::string& sein.

    #include <iostream>
    
    class Person{
    public:
    // Konstruktor
    Person(const std::string &name_, const std::string &alter_) : name(name_), alter(alter_)
    { }
    std::string name;
    std::string alter;
    };
    
    class Student: public Person{
    public:
    // Gegeben ist der Konstruktor
    Student(const std::string &name_, const std::string &alter_, int nr_) : Person(name_, alter_), nr(nr_)
    {}
    int nr;
    };
    

Anmelden zum Antworten