3.6.4 기반 클래스 포인터를 담은 컨테이너
기반 클래스 타입으로 원소를 정의한 컨테이너나 컨테이너 어댑터에 파생 클래스 객체의 포인터도 저장할 수 있다. 이렇게 하면 컨테이너 원소가 가리키는 객체에서 다형적인 동작을 얻을 수 있다. 어떻게 동작하는지 알아보려면 기반 클래스와 파생 클래스가 필요하다. 여기서는 2장에서 사용한 Ex2_06의 Box 클래스를 다시 꺼내서 조금씩 고쳐보는 것으로 시작하겠다. 먼저 클래스 정의부터 보자.
class Box { protected: size_t length {}; size_t width {}; size_t height {}; public: explicit Box(size_t l = 1, size_t w = 1, size_t h = 1) : length {l}, width {w}, height {h} {} virtual ~Box() = default; virtual double volume() const; // 상자의 부피 // Box 객체의 비교 연산자 bool operator<(const Box& box) const; bool operator==(const Box& box) const; // 입력 스트림과 출력 스트림 virtual std::istream& read(std::istream& in); virtual std::ostream& write(std::ostream& out) const; };