Forum: PC-Programmierung C++ initialisierungsliste


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von mo (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,

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

von mi (Gast)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
-1 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.