C++ initialisierungsliste

Gast
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.
Gast
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.
Gast
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.
Gast
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 von einem Moderator gelöscht.
Beitrag #5137978 wurde von einem Moderator gelöscht.
Beitrag #5137983 wurde von einem Moderator gelöscht.
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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 9 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.