Wenn ich eine Initialisierungsliste verwenden, um eine Struktur zu erstellen, aber die Initialisierungsliste enthält weniger Elemente als meine Struktur, sehe ich die verbleibenden Elemente mit Nullen initialisiert werden.C++ Initialisiererlisten mit weniger Elementen als die Struktur
Ist dies ein undefiniertes Verhalten und ich sehe Nullen, weil mein Compiler (VS2015) beschlossen hat, den Speicher für mich auf Null zu setzen?
Oder könnte mir jemand auf die Dokumentation verweisen, die dieses Verhalten in C++ erklärt?
Dies ist mein Code:
struct Thing {
int value;
int* ptr;
};
void main() {
Thing thing { 5 };
std::cout << thing.value << " " << thing.ptr << std::endl;
}
Und das ist, was er druckt:
5 00000000
Das letzte Element ist derjenige, der ohne Initialisierer auf Null gesetzt wurde.
Diese '{5}' setzt nur den ersten Wert '5' und den Rest' 0' – DimChtz
@DimChtz Also genau wie ein Array initialisieren? int a [5] = {5} setzt alle meine nicht spezifizierten Elemente auf Null. – MondKin
@DimChtz Wissen Sie, wie dies aufgerufen wird, um es in den Dokumenten zu suchen? – MondKin