Namespaces
Variants

std::ios_base:: ios_base

From cppreference.net
(1)
private :
ios_base ( const ios_base & ) ;
(bis C++11)
public :
ios_base ( const ios_base & ) = delete ;
(seit C++11)
protected :
ios_base ( ) ;
(2)
1) Der Kopierkonstruktor ist private (until C++11) deleted (since C++11) : Streams sind nicht kopierbar.
2) Der Standardkonstruktor ist geschützt: Nur abgeleitete Klassen dürfen std::ios_base konstruieren. Der interne Zustand ist nach der Konstruktion undefiniert. Die abgeleitete Klasse muss std::basic_ios::init() aufrufen, um die Initialisierung vor der ersten Verwendung oder vor dem Destruktor abzuschließen; andernfalls ist das Verhalten undefiniert.

Hinweise

Gleiches gilt für die Konstruktoren der nächsten Klasse in der I/O-Hierarchie, std::basic_ios . Weiter abgeleitete Klassen ( std::istream und std::ostream ) werden stets mit einem konkreten Streampuffer-Objekt konstruiert und rufen std::basic_ios::init() , möglicherweise mehrfach, auf, um die Initialisierung ihrer virtuellen Basis abzuschließen.

Fehlerberichte

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

DR Angewendet auf Verhalten wie veröffentlicht Korrektes Verhalten
LWG 50 C++98 der Kopierkonstruktor war nicht spezifiziert als privat spezifiziert
LWG 220 C++98 das Verhalten beim Zerstören eines std::ios_base
Objekts vor dem Aufruf von init() war nicht klar
das Verhalten ist
in diesem Fall undefiniert
LWG 1249 C++98 Initialisierung musste nicht vor der ersten Verwendung abgeschlossen sein muss ebenfalls abgeschlossen sein