0-Initialisierung in C++
Wir werden später gelegentlich das Verb „0-initialisieren “ verwenden. Damit ist gemeint, daß in das angesprochene Objekt der Wert 0 (gewandelt in den Typ des Objekts) geschrieben wird. Hierbei nehmen wir als Typ einen der bisher behandelten Typen an, der kein Reihungstyp ist.
Würde eine int-Variable 0-initialisiert werden, hätte sie direkt danach beispielsweise den Wert 0.
Die 0-Initialisierung einer Reihung besteht darin, daß jede Komponente der Reihung 0-initialisiert wird.
Ein Objekt »o« einer Klasse kann (wie eine Reihungen) andere Objekte enthalten, die auch als Felder von »o« bezeichnet werden. Bei der 0-initialisierung eines solchen Objektes »o« werden alle seine Felder 0-initialisiert (ähnlich wie bei einer Reihung).
Beispiele zur 0-Initialisierung folgen später!
Relevante Zitate maßgeblicher Quellen
- C++ (Stand 2015) 8.5p6 (gekürzt)
- To zero-initialize an object or reference of type T means:
- — if T is a scalar type, the object is initialized to the value obtained by converting the integer literal 0 (zero) to T;
- — if T is a (possibly cv-qualified) non-union class type, each non-static data member and each base-class
- subobject is zero-initialized and padding is initialized to zero bits;
- — if T is an array type, each element is zero-initialized;
Übungsfragen
? Ausgabe vorhersagen
Wenn »v« eine 0-initialisierte int-Variable ist, die seit ihrer Initialisierung nicht verändert wurde, was gibt die Auswertung des Ausdrucks am Ende dieser Übungsfrage dann aus?
- Ausdruck
#include <iostream>
#include <ostream>- …
::std::cout << v
? Ausgabe vorhersagen
Wenn »v« eine 0-initialisierte int-Reihung mit mindestens 9 Komponenten ist, die seit ihrer Initialisierung nicht verändert wurde, was gibt die Auswertung des Ausdrucks am Ende dieser Übungsfrage dann aus?
- Ausdruck
#include <iostream>
#include <ostream>- …
::std::cout << v[ 7 ]