Warum eigentlich die Initialisierungsliste im Konstruktor?
-
Warum soll man eigentlich die Initialisierungsliste im Konstruktor einsetzen, wenn die Attribute nicht konstant oder Referenzen sind? Was bringt das an Vorteil?
-
In der Initialisierungsliste wird der Konstruktor für alle Basisklassen und Membervariablen aufgerufen. Im Rumpf arbeitet man bereits mit den fertig erstellten Objekten. auf die Initialisierung kann man nur in der Initialisierungsliste Einfluss ausüben.
-
Die Initialiserungsliste ist effizienter (Verwendung von copycon anstelle dtor und op=): http://www.henkessoft.de/C++/C++ Fortgeschrittene/C++_Fortgeschrittene.htm#Initialiserungsliste
Ausnahme siehe: Scott Meyers, Effektiv C++ programmieren, Lektion 12.
-
... außerdem braucht dann das Attribut keinen DefaultCtor (also einen ohne Parametern).
Sonst bekommt man Probleme, wenn man Objekte aggregieren will, die keinen DefCtor und/oder keinen operator=() haben (sollen).Gruß,
Simon2.