Namespaces
Variants

std::ios_base:: Init

From cppreference.net
class Init ;

이 클래스는 기본 C++ 스트림들( std::cin , std::cout 등)이 적절히 초기화되고 소멸되도록 보장하는 데 사용됩니다. 이 클래스는 생성된 인스턴스의 수를 추적하며, 첫 번째 인스턴스가 생성될 때 C++ 스트림들을 초기화하고 마지막 인스턴스가 소멸될 때 출력 스트림들을 플러시합니다.

헤더 <iostream> 는 정적 저장 기간을 가진 std::ios_base::Init 인스턴스를 (직접 또는 간접적으로) 정의하는 것처럼 동작합니다: 이는 순서화된 초기화 를 가진 정적 객체들의 생성자와 소멸자에서 표준 I/O 스트림에 안전하게 접근할 수 있도록 합니다 (단, <iostream> 가 이러한 객체들이 정의되기 전에 번역 단위에 포함되어 있는 경우).

C++ 라이브러리 모듈 각각은 호스티드 구현 내에서 인터페이스 유닛 을 포함하는 것처럼 동작하며, 이는 내보내지 않은 std::ios_base::Init 변수를 순서화된 초기화 와 함께 정의합니다.

결과적으로, 해당 변수의 정의는 C++ 라이브러리 모듈의 임포트 지점 이후에 나오는 모든 선언보다 외관 순서상 앞서게 됩니다. 이러한 정의의 존재 여부는 표준 iostream 객체를 참조하지 않는 프로그램에서는 관찰할 수 없습니다.

(C++23부터)

멤버 함수

(constructor)
아직 생성되지 않은 경우 기본 C++ 스트림을 초기화합니다
(public member function)
(destructor)
* this 가 파괴되는 마지막 인스턴스인 경우 기본 C++ 스트림을 플러시합니다
(public member function)

결함 보고서

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

DR 적용 대상 게시된 동작 올바른 동작
LWG 1123 C++98 생성자와 소멸자의 동작이
설명 전용 정적 데이터 멤버 init_cnt 에 의존함
의존성 제거

참고 항목

표준 C 입력 스트림으로부터 읽기 stdin
(전역 객체)
표준 C 출력 스트림에 쓰기 stdout
(전역 객체)
표준 C 오류 스트림에 쓰기 stderr , 버퍼링되지 않음
(전역 객체)
표준 C 오류 스트림에 쓰기 stderr
(전역 객체)