Kann jemand mir dieses kleines Programm mit Array helfen
-
Danke camper, jetzt verstehe ich schon deutlich mehr. Was ich noch nicht verstehe ist was eine Zero-Initialisierung einer Klasse genau bedeutet. Kann man eine Klasse explizit Zero-Initialisieren und wie sähe das als Codezeile aus?
EDIT: Beim zweiten mal lesen habe ich es verstanden denke ich.
-
Kleine Ergänzung:
Falls bei der Definition einer Variablen diese nicht explizit initilialisiert wird (fehlender Initialisierer, keine Erwähnung in der ctor-Initialisierungsliste, new ohne Initialisierer), so wird die betreffende Variable Default-Initialisiert.
Eine leeres Klammerpaar () bzw. {} bedeutet dagegen stets Value-Initialisierung.Variablen mit statischer und thread-lokaler Lebensdauer bekommen automatisch eine Zeroinitialisierung beim Programmstart verpasst.
-
Das ist doch deutlich komplexer als gedacht.
Alsostd::string S;ist nicht dasselbe wie
std::string S();? Also das zweite ist eine Value-Initialisierung? Was wird da in diesem Beispiel konkret anders gemacht?
-
Das zweite ist eine Funktionsdeklaration.
std::string() wäre ein value-initialized std::string.