Namespaces
Variants

std::ios_base:: Init

From cppreference.net
class Init ;

Diese Klasse wird verwendet, um sicherzustellen, dass die standardmäßigen C++-Streams ( std::cin , std::cout , etc.) ordnungsgemäß initialisiert und zerstört werden. Die Klasse verfolgt, wie viele Instanzen von ihr erstellt werden, und initialisiert die C++-Streams, wenn die erste Instanz konstruiert wird, sowie leert die Ausgabestreams, wenn die letzte Instanz zerstört wird.

Der Header <iostream> verhält sich so, als ob er (direkt oder indirekt) eine Instanz von std::ios_base::Init mit statischer Speicherdauer definiert: Dies macht es sicher, auf die Standard-E/A-Streams in den Konstruktoren und Destruktoren von statischen Objekten mit geordneter Initialisierung zuzugreifen (sofern <iostream> in der Übersetzungseinheit vor der Definition dieser Objekte eingebunden wurde).

Jedes C++-Bibliotheksmodul in einer Hosted-Implementierung verhält sich so, als ob es eine Interface-Einheit enthält, die eine nicht exportierte std::ios_base::Init Variable mit geordneter Initialisierung definiert.

Folglich ist die Definition dieser Variable erscheinungsgeordnet vor jeder Deklaration, die auf den Importpunkt eines C++-Bibliotheksmoduls folgt. Die Existenz einer solchen Definition ist für ein Programm nicht beobachtbar, das keine der Standard-Iostream-Objekte referenziert.

(since C++23)

Memberfunktionen

(constructor)
initialisiert die Standard-C++-Streams, falls sie noch nicht erstellt wurden
(public member function)
(destructor)
leert die Standard-C++-Streams, falls * this die letzte zu zerstörende Instanz ist
(public member function)

Fehlerberichte

Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.

DR Angewendet auf Verhalten wie veröffentlicht Korrigiertes Verhalten
LWG 1123 C++98 das Verhalten des Konstruktors und des Destruktors
hängt von einem nur zur Darstellung dienenden statischen Datenelement init_cnt ab
Abhängigkeit entfernt

Siehe auch

liest vom standard C-Eingabestream stdin
(globales Objekt)
schreibt in den standard C-Ausgabestream stdout
(globales Objekt)
schreibt in den standard C-Fehlerstream stderr , ungepuffert
(globales Objekt)
schreibt in den standard C-Fehlerstream stderr
(globales Objekt)