간단히 말하자면
여러 가지 형태를 가지는 것이다.
여러 가지 형태를 가지는 것이니,
오버로딩과 오버라이딩을 써서 여러 형태를 가지는 기능들을
한데 묶어 분류해 놓은 것이다.
다형성은 굉장히 중요하다.
그 이유는, 실제 유용성이 굉장히 많다.
예를 들어 게임이라고 하면,
몬스터의 종류가 많을 것이다.
이런 몬스터의 부모 클래스가 되는 BaseMonster 클래스가 있을 것이고,
이 클래스에 파생되는 애들도 있을 것이다.
그럼 몬스터 종류가 약 20개쯤 된다고 가정해보자.
이 다른 타입들을 배열에 저장하기에는 좀 부담스럽다.
귀찮고 번거로운 일이기 때문에.
BaseMonster 클래스 내부에
virtual 반환형 Move() 함수를 제작한다.
이후 monster* 배열을 제작한 후,
이 배열 내부에 있는 moster의 move 함수를 호출한다.
그렇게 되면 실체(업캐스팅 전 실제 포인터 변수 내부의 자료형)의 move를 호출해준다.
이처럼 다형성은 유용하다.
OOP는 사물을 보는 눈이라하면,
다형성은 이를 한 단계 추상화한 개념이라고 보면 된다.
'프로그래밍 언어 > C & C++ 정리' 카테고리의 다른 글
쓰레드 기본 사용법 (0) | 2024.11.28 |
---|---|
decltype과 템플릿 (0) | 2024.11.27 |
인라인 함수 (0) | 2024.11.25 |
Casting - 왜 C스타일 캐스팅은 4개로 나뉘었을까? (0) | 2024.11.24 |
인터페이스 (0) | 2024.11.22 |