[c++] 다형성의 종류(polymorphism types)
  1. 정적 다형성(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;
    }
    
  2. 동적 다형성(Dynamic Polymorphism): 실행 시간에 결정되는 다형성으로, 가상 함수(virtual function)과 상속을 이용하여 구현됩니다.

    class Shape {
    public:
        virtual void draw() {
            // 기본 draw 메서드
        }
    };
    class Circle : public Shape {
    public:
        void draw() override {
            // Circle을 그리는 draw 메서드
        }
    };
    

정적 다형성은 컴파일 시간에 메서드나 함수가 호출될 때 어떤 형태로 실행될지 결정되지만, 동적 다형성은 실행 시간에 객체의 실제 형태에 따라 메서드나 함수가 호출될 형태가 결정됩니다. 이를 통해 유연하고 확장 가능한 코드를 작성할 수 있게 됩니다.

참고 자료: