FSST - Hardwarenahe Programmierung
Konstruktor
Konstruktoren und Destruktoren sind spezielle Methoden einer Klasse und haben den gleichen Namen wie die Klasse. Die Aufgabe von Konstruktoren ist, Objekte in einen definierten Anfangszustand zu bringen und so benötigte Ressourcen zu reservieren, sofern sie zum Zeitpunkt der Objekterstellung bereits bekannt sind. Wird kein Konstruktor angegeben, so wird ein Standard Konstruktor vom System ausgeführt. Da der Konstruktor außerhalb der Klasse aufgerufen wird muss dieser public sein. Konstruktoren können auch mit Parametern (parametrisierten Konstruktoren) versehen werden, sodass bei der Erzeugung des Objektes aktuelle Werte für die Initiallisierung der Instanzevariablen übergeben werden können. Dies ist über den Zuweisungsoperator (=) im Anweisungsteil des Konstruktors oder über Initialisierungslisten möglich, was eine wesentliche Vereinfachung ist.
class Date { private: uint8_t day, month, year; uint8_t bcdToUint(uint8_t const nybbles); public: Date():day(1), month(1), year(00) // Konstante Parameterwerte {} // Initialisierung über parametrisierten Konstruktor Date(uint8_t _day, uint8_t _month, uint8_t _year):day(_day), month(_month), year(_year) { // entspircht: day = _day; .... } ~Date() // Destruktor {} uint8_t GetDay(); // Methode };
Nach dem Konstruktor und ev. der Parameterliste kommt durch einen Doppelpunkt getrennt der Name einer Instanzvariablen (day), die mit einem Wert initialisiert werden soll. In runden Klammern eingeschlossen der Parametername aus der Parameterliste (_day), mit dessen Wert diese initialisiert werden soll. Durch Komma getrennt können weiter Instanzvariable initialisiert werden.
int main() { Date date1; // Instanziierung mit Standard Konstruktor und Date date2(18,4,15); // mit parametrisierten Konstruktor }
See how it works: Date
Überladener Konstruktor¶
Wie beim Überladen der Methoden kann dies auch beim Konstruktor erfolgen, wenn man die Membervariablen z.B. mit unterschiedlichen Möglichkeiten initiallisieren möchte.
Übungen Überladen von Methoden und Konstruktor¶
Destruktor¶
Eine andere spezielle Methode ist der Destruktor, der beim Verlassen des Sichtbarkeitsbereiches des Objektes aufgerufen wird. Er hat den gleichen Namen wie die Klasse und eine Tilde () vorangestellt.
// Destruktor ~Blinky() { printf("Good bye\n"); }