더북(TheBook)

파생 클래스 Carton의 정의는 Carton.h 헤더 파일에 하고, 코드는 다음과 같다.

// Carton.h
#ifndef CARTON_H
#define CARTON_H
#include "Box.h"
 
class Carton :public Box
{
public:
  explicit Carton(size_t l = 1, size_t w = 1, size_t h = 1) : Box {l, w, h}{}
  double volume() const override { return 0.85*Box::volume(); }
};
#endif

코드 양이 많지는 않다. Box 객체 부피의 85% 값을 반환하도록 volume() 멤버만 재정의한다. Carton(포장 상자)은 더 두꺼운 부분이 있을 수도 있고 내부 충전재가 있을 수도 있지만, 더 중요한 부분은 크기가 같은 Box라도 실제 부피가 다를 수 있다는 점이다. 기반 클래스 volume() 멤버의 재정의 버전이 호출될 때도 Box의 부피를 이용해야 한다.

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