[c++] 다형성의 종류(polymorphism types)
-
정적 다형성(Static Polymorphism): 컴파일 시간에 결정되는 다형성으로, 템플릿과 오버로딩을 이용하여 구현됩니다.
// 템플릿을 사용한 정적 다형성 template <typename T> T maximum(T a, T b) { return (a > b) ? a : b; } // 함수 오버로딩을 사용한 정적 다형성 int multiply(int a, int b) { return a * b; } double multiply(double a, double b) { return a * b; }
-
동적 다형성(Dynamic Polymorphism): 실행 시간에 결정되는 다형성으로, 가상 함수(virtual function)과 상속을 이용하여 구현됩니다.
class Shape { public: virtual void draw() { // 기본 draw 메서드 } }; class Circle : public Shape { public: void draw() override { // Circle을 그리는 draw 메서드 } };
정적 다형성은 컴파일 시간에 메서드나 함수가 호출될 때 어떤 형태로 실행될지 결정되지만, 동적 다형성은 실행 시간에 객체의 실제 형태에 따라 메서드나 함수가 호출될 형태가 결정됩니다. 이를 통해 유연하고 확장 가능한 코드를 작성할 수 있게 됩니다.
참고 자료: