더북(TheBook)

utility 헤더의 std::rel_ops 네임스페이스는 비교 연산자를 위한 템플릿을 담고 있다. 클래스에 operator<()operator==()을 정의했다면 템플릿에서 필요할 때 나머지를 생성할 것이다. Box 클래스를 보면 상자 크기를 정의하는 private 멤버 세 개가 있다. 생성자 인수에 쓰인 기본값은 인수 없는(no-arg) 생성자를 위한 것이다. 컨테이너에 Box 객체를 저장하려면 인수 없는 생성자가 필요하다. 예를 들어 초기화되지 않은 원소가 저장할 원소 타입의 기본 생성자를 호출해서 생성될 수 있기 때문이다. 인라인 friend 함수 두 개는 스트림의 입력과 출력 연산자를 오버로드한다. operator>>() 함수는 각 그룹에 있는 세 가지 입력값 중에 첫 번째 값을 읽어 들인 뒤에 스트림 객체의 eof() 멤버를 호출해서 EOF에 도달했는지 검사한다. EOF는 Ctrl+Z를 입력하거나 파일 입력 스트림에서 EOF 표시(end-of-file marker)를 읽을 때 표준 입력 스트림에 설정된다. 입력 스트림에 EOF가 설정되면 입력이 끝나고 스트림 객체가 반환된다. EOF는 여전히 설정된 상태를 유지하고, 따라서 프로그램을 호출해서 EOF를 발견할 수 있다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.