Forum: PC-Programmierung C++ initialisierungsliste


von mo (Gast)


Lesenswert?

Hallo,

Wann sollte man Felder einer Klasse über eine Initialisierungsliste 
initialisieren und wann in den geschweiften Klammern des Konstruktors?

von mi (Gast)


Lesenswert?

mo schrieb:
> Wann sollte man Felder einer Klasse über eine Initialisierungsliste
> initialisieren

Immer.

> und wann in den geschweiften Klammern des Konstruktors?

Dort kann man sie nicht mehr initialisieren, sondern nur noch Werte 
zuweisen.

Das macht man, wenn die Berechnung des Werts in der 
Initialisierungsliste nicht möglich ist oder zu unübersichtlich wäre. 
Beispielsweise wenn erst noch Funktionsaufrufe, temporäre Objekte, 
Fehlerbehandlung etc. nötig ist, bevor man den Wert kennt.

von mh (Gast)


Lesenswert?

mi schrieb:
> Das macht man, wenn die Berechnung des Werts in der
> Initialisierungsliste nicht möglich ist oder zu unübersichtlich wäre.
> Beispielsweise wenn erst noch Funktionsaufrufe, temporäre Objekte,
> Fehlerbehandlung etc. nötig ist, bevor man den Wert kennt.

Auch dann ist es häufig sinnvoller den Teil in eine eigene Funktion 
auszulagern und den Rückgabewert in der Initialisierungsliste des 
Konstruktors zu benutzen.
Bei allem was nach der Initialisierungsliste im Konstruktor passiert 
muss man sich explizit selbst um Exceptionsicherheit und ähnliches 
Gedanken machen.

von mo (Gast)


Lesenswert?

Ab c++11 sind Variablen doch auch im header bei der deklaration 
initialisierbar .... also auf einen definierten Startwert setzbar.

Ist das einer initialisierung in einer Initialisierungsliste 
vorzuziehen?

Beitrag #5137393 wurde von einem Moderator gelöscht.
Beitrag #5137507 wurde von einem Moderator gelöscht.
Beitrag #5137579 wurde von einem Moderator gelöscht.
von mo (Gast)


Lesenswert?

Wenn ihr fertig seit, euch das Leben zur Hölle zu machen, geht doch 
bitte auf meine Fragen ein.

Es gibt im Leben junge, erfahrene und alte auf allen Bereichen.Deswegen 
läuft im Fernsehen immer das gleiche nur mit anderen Sprechern und 
Schauspielern und anderen Einstellungen.
Ich fürchte in den Schulen bringen sie euch viel bei nur nicht das 
Wesentliche. Manieren, Respekt, Demut.

Die Initialisierung bei der Deklaration ist wohl auch möglich.
Beim Bilden der Instanz kann durch die Übergabe von Konstruktorparameter 
das Objekt individuell initialisiert werden.
Wie ich das verstehe entweder durch eine Initialisierungsliste oder in 
den geschweiften Klammern des Konstruktors.

Bei diesen beiden Möglichkeiten gibt es hinsichtlich Ergebnis 
gemeinsames aber auch Unterschiede.

Beitrag #5137738 wurde von einem Moderator gelöscht.
Beitrag #5137781 wurde von einem Moderator gelöscht.
Beitrag #5137836 wurde von einem Moderator gelöscht.
Beitrag #5137916 wurde von einem Moderator gelöscht.
Beitrag #5137932 wurde von einem Moderator gelöscht.
Beitrag #5137964 wurde von einem Moderator gelöscht.
Beitrag #5137974 wurde vom Autor gelöscht.
Beitrag #5137978 wurde von einem Moderator gelöscht.
Beitrag #5137983 wurde von einem Moderator gelöscht.
von mo (Gast)


Lesenswert?

Danke,
Hier ist es auch ohne Drama erklärt.

https://www.c-plusplus.net/forum/259736-full

Beitrag #5138072 wurde von einem Moderator gelöscht.
Beitrag #5138349 wurde von einem Moderator gelöscht.
Beitrag #5138516 wurde von einem Moderator gelöscht.
Beitrag #5139156 wurde von einem Moderator gelöscht.
Beitrag #5139980 wurde von einem Moderator gelöscht.
Beitrag #5140096 wurde von einem Moderator gelöscht.
Beitrag #5140237 wurde von einem Moderator gelöscht.
Beitrag #5140378 wurde von einem Moderator gelöscht.
Beitrag #5140398 wurde von einem Moderator gelöscht.
Beitrag #5140403 wurde von einem Moderator gelöscht.
Beitrag #5140405 wurde von einem Moderator gelöscht.
Beitrag #5140440 wurde von einem Moderator gelöscht.
Beitrag #5140601 wurde von einem Moderator gelöscht.
Beitrag #5142596 wurde von einem Moderator gelöscht.
Beitrag #5143770 wurde von einem Moderator gelöscht.
Beitrag #5144964 wurde von einem Moderator gelöscht.
Beitrag #5144995 wurde von einem Moderator gelöscht.
Beitrag #5145001 wurde von einem Moderator gelöscht.
Beitrag #5145229 wurde von einem Moderator gelöscht.
Beitrag #5145937 wurde von einem Moderator gelöscht.
Beitrag #5145963 wurde von einem Moderator gelöscht.
Beitrag #5145974 wurde von einem Moderator gelöscht.
Beitrag #5148069 wurde von einem Moderator gelöscht.
Beitrag #5149297 wurde von einem Moderator gelöscht.
Beitrag #5149361 wurde von einem Moderator gelöscht.
Beitrag #5149382 wurde von einem Moderator gelöscht.
Beitrag #5149417 wurde von einem Moderator gelöscht.
Beitrag #5153243 wurde von einem Moderator gelöscht.
Beitrag #5153369 wurde von einem Moderator gelöscht.
Beitrag #5153415 wurde von einem Moderator gelöscht.
Beitrag #5153670 wurde von einem Moderator gelöscht.
Beitrag #5167776 wurde von einem Moderator gelöscht.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.