더북(TheBook)

read()write() 함수 멤버는 Box.cpp 파일에 정의한다. 코드는 다음과 같다.

// Box.cpp
// Box 클래스의 함수 멤버 정의
#include <iostream>
#include "Box.h"
 
// 스트림에서 Box 객체를 읽기
  std::istream& Box::read(std::istream& in)
  {
  size_t value {};
  if ((in >> value).eof())
    return in;
  length = value;
  in >> width >> height;
  return in;
 
}
 
// 스트림에 Box 객체를 쓰기
std::ostream& Box::write(std::ostream& out) const
{
  out << typeid(\*this).name() << "(" << length << "," << width << "," << height << ")";
  return out;
}

함수 정의는 이해하기 쉽게 되어 있다. read() 함수는 파일 끝을 읽을 때 istream 객체에 EOF 표시자를 설정해 두는 걸 볼 수 있다. 잘 알겠지만 키보드에서 Ctrl+Z를 입력하면 파일 끝을 읽게 되고, 이를 이용해 Box 객체 크기 순차열 입력이 끝났다는 것을 탐지할 수 있다. write() 함수는 타입 이름 다음에 괄호 사이에 Box 객체의 크기를 출력한다. 현재 객체의 타입 이름은 typeid 연산자의 실행 결과인 type_info 객체의 name() 멤버를 호출해서 얻을 수 있다. 따라서 출력되는 각 객체의 타입을 출력에서 확인할 수 있다.

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