[c++] 가상 함수와 상위 클래스(superclass) 및 하위 클래스(subclass)의 상호 작용

가상 함수(virtual function)는 C++에서 상위 클래스와 하위 클래스의 상호 작용을 가능하게 하는 중요한 개념입니다. 상속(inheritance)을 통해 만들어진 상위 클래스와 하위 클래스는 가상 함수를 통해 유연하게 연결될 수 있습니다.

상위 클래스와 하위 클래스

상위 클래스는 다른 클래스들이 상속을 통해 확장할 수 있는 기본적인 클래스입니다. 이와 달리 하위 클래스는 상속을 받아 상위 클래스를 확장하는 클래스입니다.

아래는 상위 클래스와 하위 클래스의 예제입니다.

class Animal {
public:
    virtual void makeSound() {
        cout << "Some sound" << endl;
    }
};

class Dog : public Animal {
public:
    void makeSound() override {
        cout << "Woof! Woof!" << endl;
    }
};

위의 예제에서 Animal 클래스는 상위 클래스이고, Dog 클래스는 Animal 클래스를 상속받은 하위 클래스입니다.

가상 함수

가상 함수를 사용하면 하위 클래스에서 상위 클래스의 메소드를 재정의(override)할 수 있습니다.

가상 함수는 상위 클래스의 포인터나 참조를 통해 하위 클래스의 객체에 접근할 때 유용하게 사용됩니다.

Animal* animal = new Dog();
animal->makeSound(); // "Woof! Woof!" 가 출력됩니다.

위의 예제에서 makeSound() 함수는 가상 함수로 선언되어 있고, Dog 클래스에서 재정의되었습니다.

결론

가상 함수를 사용하면 상위 클래스와 하위 클래스 간의 유연한 상호 작용을 보장할 수 있습니다. 이를 통해 상위 클래스의 포인터나 참조를 사용하여 하위 클래스의 객체를 다룰 때, 올바른 함수가 호출되어 예상대로 동작하도록 할 수 있습니다.

더 나아가, 가상 함수를 이용한 다형성(polymorphism) 개념은 객체지향 프로그래밍에서 중요한 개념 중 하나로 여겨집니다.

참고 자료