Namespaces
Variants

std::ios_base:: ios_base

From cppreference.net
(1)
private :
ios_base ( const ios_base & ) ;
(C++11 이전)
public :
ios_base ( const ios_base & ) = delete ;
(C++11 이후)
protected :
ios_base ( ) ;
(2)
1) 복사 생성자는 private (C++11까지) deleted (C++11부터) 로 지정됩니다: 스트림은 복사할 수 없습니다.
2) 기본 생성자는 protected로 선언됩니다: 파생 클래스만이 std::ios_base 를 생성할 수 있습니다. 생성 후 내부 상태는 정의되지 않습니다. 파생 클래스는 첫 사용 전이나 소멸자 호출 전에 std::basic_ios::init() 를 호출하여 초기화를 완료해야 합니다; 그렇지 않으면 동작은 정의되지 않습니다.

참고 사항

I/O 계층 구조에서 다음 클래스인 std::basic_ios 의 생성자에도 동일하게 적용됩니다. 더 파생된 클래스들( std::istream std::ostream )은 항상 구체적인 스트림 버퍼 객체와 함께 생성되며, 가상 베이스의 초기화를 완료하기 위해 std::basic_ios::init() 을 호출합니다(여러 번 호출될 수도 있음).

결함 보고서

다음의 동작 변경 결함 보고서들은 이전에 발표된 C++ 표준에 소급 적용되었습니다.

DR 적용 대상 게시된 동작 올바른 동작
LWG 50 C++98 복사 생성자가 명시되지 않음 private으로 지정됨
LWG 220 C++98 init() 호출 전 std::ios_base
객체를 파괴할 때의 동작이 명확하지 않음
이 경우 동작은
정의되지 않음
LWG 1249 C++98 초기화가 첫 사용 전에 완료될 필요가 없었음 초기화도 완료되어야 함