ableiten +konstruktoraufruf
-
hallo leute!
bin beim einarbeiten in c++ und habe folgende fragen:
1)wenn ich von einer abgeleiteten klasse ein objekt bilde,
wird dann automatisch auch ein objekt der oberklasse erstellt?
der konstruktor der oberklasse wird nämlich abgearbeitet. mit der initialisierungsliste kann ich quasi nur bestimmen, welcher konstruktor abgearbeitet wird.2)führt jeder konstruktoraufruf zu einem objekt, oder dient er nur zur
initialisierung, oder beidem? oder aber wird ein konstruktor nach der objekterstellung abgearbeitet (als erstes).das sind wirklich essentielle fragen, darum wäre ich um antworten dankbar.
-
david steinberger schrieb:
1)wenn ich von einer abgeleiteten klasse ein objekt bilde,
wird dann automatisch auch ein objekt der oberklasse erstellt?
der konstruktor der oberklasse wird nämlich abgearbeitet. mit der initialisierungsliste kann ich quasi nur bestimmen, welcher konstruktor abgearbeitet wird.ja, es wird der konstruktor von der basisklasse aufgerufen, da ja auch die Basisklasse member haben kann die initialisiert werden müssen.
2)führt jeder konstruktoraufruf zu einem objekt, oder dient er nur zur
initialisierung, oder beidem? oder aber wird ein konstruktor nach der objekterstellung abgearbeitet (als erstes).jeder konstruktoraufruf führt zu einem objekt. Das ist seine Aufgabe. Zu beachten ist aber, dass der konstruktor zwei verschiedene Aufgabenteile hat:
Die initialisierungsliste gibt direkt beim erstellen des objekts den membern einen startwert. Nach dem erstellen des objekts kann aber weiterer code(der teil in den geschweiften Klammern) ausgeführt werden.class Foo{ std::string name; std::size_t size; public: Foo(std::string startwert):name(startwert)//initialisierung { size=name.size();//code der nach der initialisierung ausgeführt wird } };