C/C++ 디자인 패턴 (4) — 프로토타입(Prototype)

문서 편집기에서 "선택한 객체 복제"를 구현한다고 하자. 선택된 것은 Document*로만 알고 있는데, 실제로는 Invoice일 수도 Memo일 수도 있다. 복사 생성자는 정적 타입을 알아야 호출할 수 있어서, 타입마다 if나 dynamic_cast를 늘어놓게…

Continue ReadingC/C++ 디자인 패턴 (4) — 프로토타입(Prototype)

C++ 고급 문법 (18) — 업캐스팅(Upcasting)

파생 클래스 객체를 기반 클래스의 포인터나 참조로 다루는 것을 업캐스팅(upcasting)이라 한다. public 상속이면 캐스트 없이 암시적으로 일어나고, 다형성은 이 변환을 전제로 동작한다. 하지만 같은 업캐스팅이라도 포인터·참조가 아니라 값으로 일어나면 파생…

Continue ReadingC++ 고급 문법 (18) — 업캐스팅(Upcasting)