std::ios_base::Init
| class Init; |
||
Diese Klasse wird verwendet, um sicherzustellen, dass die Standard-C++-Streams (std::cin, std::cout usw.) korrekt initialisiert und deinitialisiert werden. Die Klasse verfolgt, wie viele Instanzen davon erstellt werden, und initialisiert die C++-Streams, wenn die erste Instanz konstruiert wird, sowie leert die Ausgabestreams, wenn die letzte Instanz zerstört wird.
Die Header-Datei <iostream> verhält sich so, als würde sie eine Instanz von std::ios_base::Init mit statischer Speicherklasse definieren (direkt oder indirekt): Dies macht es sicher, auf die Standard-I/O-Streams in den Konstruktoren und Destruktoren von statischen Objekten mit geordneter Initialisierung zuzugreifen (solange <iostream> in der Übersetzungseinheit vor der Definition dieser Objekte eingebunden wurde).
|
Jedes C++-Bibliotheksmodul in einer gehosteten Implementierung verhält sich so, als enthielte es eine Schnittstelleneinheit, die eine unexportierte Infolgedessen ist die Definition dieser Variablen vor jeder Deklaration, die nach dem Importzeitpunkt eines C++-Bibliotheksmoduls folgt, vorrangig geordnet. Ob eine solche Definition existiert, ist für ein Programm, das keine der Standard-Iostream-Objekte referenziert, nicht beobachtbar. |
(seit C++23) |
[editieren] Memberfunktionen
| (Konstruktor) |
Initialisiert die Standard-C++-Streams, falls diese noch nicht erstellt wurden (öffentliche Memberfunktion) |
| (Destruktor) |
Leert die Standard-C++-Streams, wenn *this die letzte zu zerstörende Instanz ist (öffentliche Memberfunktion) |
[editieren] 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ängen von einem expositions-only statischen Datenmitglied init_cnt ab |
entfernte die Abhängigkeit |
[editieren] Siehe auch
| liest vom Standard-C-Eingabestrom stdin (globales Objekt) | |
| schreibt in den Standard-C-Ausgabestrom stdout (globales Objekt) | |
| schreibt in den Standard-C-Fehlerstrom stderr, unbuffered (globales Objekt) | |
| schreibt in den Standard-C-Fehlerstrom stderr (globales Objekt) |