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.


  • Mod

    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.
    Also

    std::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?


  • Mod

    Das zweite ist eine Funktionsdeklaration.

    std::string() wäre ein value-initialized std::string.


Anmelden zum Antworten