std::ios_base::ios_base
cppreference.net에서
private:
ios_base( const ios_base& );
|
(1) | (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 | 초기화가 첫 사용 전에 완료될 필요가 없었음 | 초기화도 완료되어야 함 |