initialisierungslisten in c++

Was sind Initialisierungslisten in C++?

Voraussetzung

Du solltest wissen

  • was Referenzen in C++ sind.
  • was das Schlüsselwort const bedeutet.
  • was ein Konstruktor ist.

Was ist eine Initialisierungsliste?

Möchte man mit Hilfe eines Konstruktors, bestimmte Attribute beim Erzeugen des Objekts, mit Werten belegen, dann gibt es dafür mehrere Möglichkeiten.

Initialisieren im Funktionsrumpf

Auto::Auto(int t, float tk, std::string m){
    tueren = t;
    tank = tk;
    marke = m;
}

In diesem Beispiel, würde man die Werte als Argumente an den Konstruktor übergeben und dieser würde unsere Attribute dann mit den Werten initialisieren.

Jedoch wäre das unsauber, denn wir würden Parameternamen verwenden, welche die Lesbarkeit reduzieren. Ein Entwickler der deinen Code ließt(oder du selbst nachdem du ihn länger nicht bearbeitet hast), könnte sich an der Stelle Fragen, “Ok wofür stand t nochmal?”. In diesem Beispiel ist es zwar offentsichtlich, da man es aus dem Kontext herleiten kann(wir weisen t dem Attribut tueren zu), aber ohne Kontext wird das schon schwerer.

Initialisieren mit Initialisierungsliste

Alternativ können wir das Gleiche mit einer Initialisierungsliste umsetzen. Eine Initialisierungsliste hat die Aufgabe Attribute mit Werten zu initialisieren. Daher werden diese in Konstruktoren verwendet. Initialisieren bedeutet, dass man einer Variablen einen Wert zuweist.

Auto::Auto(int tueren, float tank, std::string marke) 
       : tueren(tueren), tank(tank), marke(marke)
{
   
}

Dafür schreibt man einen Doppelpunkt hinter die Runde Klammer der Parameterliste, gefolgt von dem Attributnamen mit zwei Runden Klammern und dem Parameternamen innerhalb der Klammer.

Auf diese Art können wir den gleichen Namen für das Attribut und den Parameter verwenden. Der Compiler kann das Attribut tueren() vom Parameter tueren(tueren) unterscheiden.

Wofür braucht man die Initialisierungsliste?

Es gibt mehrere Gründe dafür Initialisierungslisten einzusetzen:

  • Initialisieren von Attributen mittels Konstruktor.
  • Besser lesbarer Code, da man keine unnötigen Parameternamen verwenden muss(t für tueren…).
  • Erstellt man konstante Attribute, dann müssen diese auch bei der Deklaration initialisiert werden.
  • Bei der Verwendung von Referenzen.
  • bei der Komposition von Klassen.

Hat dir der Inhalt gefallen?

Falls du mehr zu Themen der Informatik lesen willst, kannst du die Suche dafür verwenden:


Du bist der Meinung, das war der Beste Beitrag zum Thema Informatik den du jemals gelesen hast? Dann ist die einzig logische Schlussfolgerung, diesen Beitrag mit deinen Kommilitonen zu teilen. Oder auch nicht mach was du willst, ich bin nicht dein Dad.

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert