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 | 초기화가 첫 사용 전에 완료될 필요가 없었음 | 초기화도 완료되어야 함 |