polymorphism
다형성 객체는 값으로 복사하지 않고 참조나 포인터로 전달한다
Base 값으로 복사하면 파생 클래스 부분이 잘리므로 API 경계에서 전달 방식을 먼저 정한다.
Base 값복사하며 파생 부분 손실
const Base&원본 객체의 타입 유지
Base*null과 소유권을 함께 판단
unique_ptr다형성과 수명까지 표현
| API 형태 | 다형성 보존 | 읽는 법 |
|---|---|---|
| void f(Base) | 아니오 | Base로 복사한다 |
| void f(Base&) | 예 | 외부 객체를 다룬다 |
| vector<unique_ptr<Base>> | 예 | 여러 Derived를 한 컬렉션에 둔다 |
핵심 다형성이 필요하면 값 복사가 아니라 참조, 포인터, 스마트 포인터 중 의도를 드러내는 형태를 고른다.