[c++] 가상 함수와 다형성의 사용 예시

1. 가상 함수 (Virtual Function)

가상 함수는 기본 클래스(부모 클래스)에서 파생된 클래스(자식 클래스)에서 재정의할 수 있는 함수입니다. 이를 통해 다양한 파생 클래스에서 동일한 인터페이스를 제공할 수 있습니다.

다음은 가상 함수를 사용한 예시 코드입니다.

#include <iostream>
using namespace std;

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

class Dog : public Animal {
public:
    void sound() override {
        cout << "Bark" << endl;
    }
};

class Cat : public Animal {
public:
    void sound() override {
        cout << "Meow" << endl;
    }
};

int main() {
    Animal* ptr1 = new Dog();
    Animal* ptr2 = new Cat();

    ptr1->sound(); // Output: Bark
    ptr2->sound(); // Output: Meow

    delete ptr1;
    delete ptr2;

    return 0;
}

위 코드에서 Animal 클래스의 가상 함수 sound()를 파생 클래스인 Dog와 Cat에서 재정의했습니다. main 함수에서 Animal 포인터를 사용하여 Dog와 Cat 객체의 다양한 소리를 출력할 수 있습니다.

2. 다형성 (Polymorphism)

다형성은 가상 함수를 통해 구현되며, 실행 시간에 객체의 실제 타입에 따라 적절한 함수 버전이 호출됩니다. 이를 통해 유연한 객체 지향 프로그래밍을 구현할 수 있습니다.

가상 함수를 통해 다양한 타입의 객체를 동일한 인터페이스로 다룰 수 있으며, 이는 코드의 유지보수 및 확장성을 향상시킵니다.

C++에서 가상 함수와 다형성은 객체 지향 프로그래밍의 핵심적인 요소로, 복잡한 시스템을 구현할 때 유용하게 활용됩니다.

참고 문헌: