파생 클래스 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의 부피를 이용해야 한다.