# std::ios_base::Init

From cppreference.com
< cpp‎ | io‎ | ios base

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 `#include <iostream>` is included in the translation unit before these objects were defined)

### Member functions

(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)

### See also

cin wcin | reads from the standard C input stream stdin (global object)
cout wcout | writes to the standard C output stream stdout (global object)
cerr wcerr | writes to the standard C error stream stderr, unbuffered (global object)
clog wclog | writes to the standard C error stream stderr (global object)

Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/io/ios_base/Init&oldid=85979"