Basis- und Elementinitialisierer bei geerbten Klassen
-
Eine Frage: Also aus dem Buch erklärt es was über Elementinitialisierer bei geerbten Klassen.
Ich sehe diesen Code.
Basis-Klasse:
Kfz::Kfz( long n, const string& herst) { nr = n; hersteller = herst; }geerbte Klasse - hier wird Konstrutkor von Kfz Kfz( n, hs) initialisiert, soweit ich es verstanden habe...
Pkw::Pkw(const string& tp, bool sd, int n, const string& hs) : Kfz( n, hs), pkwTyp(tp), schiebe(sd) { // Hier ist nichts mehr zu tun. }Aber ist es nicht sinnvoller wenn ich bei Basis-Klasse also Kfz
noch das hier : nr(n), hersteller(herst) dranhänge, also so:
Kfz::Kfz( long n, const string& herst) : nr(n), hersteller(herst) { ; }dann geht sowohl für Basis als auch geerbte schneller mit der Laufzeit und beide hätten kein Problem mit konstanten Objekten?
ich bin euch immer wieder dankbar für die Hilfe! Hoffe es diesen Buch bald abgeschlossen zu haben.
-
ja, ist es.
drei dinge beachten bei elementinitialisierungslisten:
1. verwende sie immer, außer es ist nicht erlaubt (z.b. mit arrays)
2. achte immer darauf, dass die reihenfolge der elemente in der elementinitialisierungsliste in der reihenfolge ihrer deklaration initialisiert werden
3. bei virtuellen basisklassen muss die unterste klasse in der hierarchie den konstruktor der virtuellen basisklasse aufrufendann bist du sicher
