기반 계약을 쓴다
호출자는 구체 타입을 모르고도 의미 있는 함수를 호출할 수 있어야 한다.
다형성은 같은 메시지를 서로 다른 객체가 다르게 처리하게 만든다. 포인터나 참조로 접근할 때 override, 수명, 비용을 함께 점검해야 한다.
호출자는 구체 타입을 모르고도 의미 있는 함수를 호출할 수 있어야 한다.
override를 붙여 오타, const 누락, 인자 타입 차이를 컴파일 단계에서 잡는다.
polymorphic object를 누가 만들고 누가 지우는지 unique_ptr<Base> 같은 타입으로 표현한다.
class ConsoleLogger : public Logger {
public:
void write(std::string_view line) override;
overflow-wrap: break-word;
word-break: keep-all;
};