[c++] 가상 함수와 추상 클래스(abstract class)의 관계

1. 가상 함수 (Virtual Functions)

가상 함수는 파생 클래스에서 기본 클래스의 멤버 함수를 재정의할 수 있도록 하는 메커니즘입니다. 기본 클래스에서 함수를 가상 함수로 선언하면 파생 클래스에서 이를 다시 정의할 수 있고, 이를 통해 다형성을 구현할 수 있습니다.

class Base {
public:
    virtual void show() {
        cout << "Base class" << endl;
    }
};

class Derived : public Base {
public:
    void show() override {
        cout << "Derived class" << endl;
    }
};

2. 추상 클래스 (Abstract Class)

추상 클래스는 순수 가상 함수(pure virtual function)를 포함하는 클래스입니다. 이 클래스는 직접 객체를 생성할 수 없으며, 파생 클래스에서 순수 가상 함수를 반드시 구현해야 합니다.

class AbstractBase {
public:
    virtual void show() = 0; // 순수 가상 함수
};

class ConcreteDerived : public AbstractBase {
public:
    void show() override {
        cout << "Concrete implementation" << endl;
    }
};

추상 클래스는 인터페이스를 정의하고, 다른 클래스들이 이를 구현하도록 하는 데 사용됩니다.

이렇게 가상 함수와 추상 클래스는 다형성을 통해 유연한 프로그래밍을 가능하게 하며, 객체 간의 상속 관계를 명확하게 정의할 수 있습니다.

참고문헌: