[c++] 가상 함수와 클래스의 상속 계층도

이번에는 C++에서 가상 함수와 클래스의 상속 계층도에 대해 알아보겠습니다. C++에서 상속을 사용하여 클래스 간의 관계를 형성하고, 가상 함수를 통해 다형성을 구현할 수 있습니다.

가상 함수 (Virtual Functions)

가상 함수는 기본 클래스에서 파생 클래스에서 재정의할 수 있는 함수입니다. 파생 클래스에서 기본 클래스의 가상 함수를 재정의하면, 해당 함수는 동적 바인딩을 통해 호출됩니다. 예를 들어, 아래 코드와 같이 Shape 클래스에 draw 함수를 가상 함수로 정의하고, 파생 클래스인 CircleRectangle에서 이를 재정의할 수 있습니다.

class Shape {
public:
    virtual void draw() {
        // 기본 도형 그리기 로직
    }
};

class Circle : public Shape {
public:
    void draw() override {
        // 원 그리기 로직
    }
};

class Rectangle : public Shape {
public:
    void draw() override {
        // 직사각형 그리기 로직
    }
};

클래스의 상속 계층도 (Inheritance Hierarchy)

클래스 간의 상속은 계층 구조를 형성합니다. 가상 함수와 함께 클래스의 상속 계층도를 구성하면, 다형성을 활용하여 코드의 유연성과 재활용성을 높일 수 있습니다. 예를 들어, 위에서 정의한 Shape, Circle, Rectangle 클래스를 상속 계층도로 나타내면 다음과 같습니다.

       Shape
       /    \
    Circle Rectangle

위에서 볼 수 있듯이, CircleRectangle 클래스는 Shape 클래스에서 상속받았음을 나타냅니다.

이와 같이 C++의 가상 함수와 클래스의 상속 계층도를 활용하여 다형성을 구현할 수 있으며, 객체지향 프로그래밍에서 유용하게 활용될 수 있습니다.

이상으로 C++에서의 가상 함수와 클래스의 상속 계층도에 대해 알아보았습니다. 감사합니다!

참고 자료