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; };