다형성(Polymorphism)은 하나의 인터페이스가 여러 가지 형태로 나타날 수 있는 성질을 의미한다.
객체지향 프로그래밍의 핵심 요소인 다형성이 C++에서 구현되는 방식을 정리했다.
다형성 구현 기술
-
가상 함수 (Virtual Function):
virtual키워드로 선언된 함수는 실행 시점에 실제 객체 타입에 맞춰 호출된다.
이를 동적 바인딩이라 한다. -
함수 오버로딩: 매개변수 타입이나 개수에 따라 동일한 이름의 함수를 다르게 정의한다.
- 연산자 오버로딩: 표준 연산자가 사용자 정의 객체에 대해 동작하도록 정의한다.
- 템플릿: 컴파일 시점에 타입에 따른 다형성을 제공하는 정적 다형성 도구이다.
다형성의 중요성
다형성을 활용하면 새로운 클래스 추가 시 기존 코드를 수정하지 않아도 되는 유연한 설계를 할 수 있다.
부모 타입 포인터로 다양한 자식 객체를 관리할 수 있다.
확장성 확보
다양한 자식 객체들을 통합 관리하며 개별 동작을 수행하게 함으로써 코드 확장성을 확보할 수 있다.
대규모 프로젝트에서 유연하고 견고한 설계를 위해 다형성에 대한 깊은 이해가 필수적인 것 같다.