class Init; |
This class is used to ensure that the default C++ streams (std::cin
, std::cout
, etc.) are properly initialized and destructed. The class tracks how many instances of it are created and initializes the C++ streams when the first instance is constructed as well as flushes the output streams when the last instance is destructed.
The header <iostream>
behaves as if it defines (directly or indirectly) an instance of std::ios_base::Init
with static storage duration: this makes it safe to access the standard I/O streams in the constructors and destructors of static objects with ordered initialization (as long as <iostream>
is included in the translation unit before these objects were defined).
Each C++ library module in a hosted implementation behaves as if it contains an interface unit that defines an unexported As a result, the definition of that variable is appearance-ordered before any declaration following the point of importation of a C++ library module. Whether such a definition exists is unobservable by a program that does not reference any of the standard iostream objects. | (since C++23) |
(constructor) | if *this is the first instance created, initializes the default C++ streams (public member function) |
(destructor) | if *this is the last instance destroyed, flushes the default C++ streams (public member function) |
reads from the standard C input stream stdin (global object) |
|
writes to the standard C output stream stdout (global object) |
|
writes to the standard C error stream stderr , unbuffered(global object) |
|
writes to the standard C error stream stderr (global object) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/io/ios_base/Init