[c++] 가상 함수의 사용 예시 및 실제 코드 예제

C++에서 가상 함수는 다형성(polymorphism)을 지원하는 중요한 개념입니다. 가상 함수를 사용하여 동적 바인딩(dynamic binding)이 가능하며, 이는 런타임 시에 어떤 함수를 호출할지 결정할 수 있게 합니다.

가상 함수 사용 예시

가상 함수는 기본 클래스에서 정의되어 파생 클래스에서 재정의할 수 있습니다. 예를 들어, 동물을 나타내는 Animal 클래스가 있고, 이를 상속받아 각각의 동물을 나타내는 클래스들이 있다고 가정해봅시다.

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

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

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

위 예제에서 makeSound() 함수는 가상 함수로 선언되었습니다. 동적 바인딩을 통해 실행 중에 올바른 함수가 호출됩니다.

실제 코드 예제

사용자가 동물의 종류를 선택하고 해당 동물이 소리를 내도록 하는 프로그램을 작성해보겠습니다.

int main() {
    Animal* animal;
    int choice;
    std::cout << "Enter 1 for dog, 2 for cat: ";
    std::cin >> choice;
    
    if (choice == 1) {
        animal = new Dog();
    } else {
        animal = new Cat();
    }
    
    animal->makeSound();
    
    delete animal;
    return 0;
}

위의 코드는 사용자의 선택에 따라 다르게 파생 클래스가 할당되고, 올바른 makeSound() 함수가 호출됨을 보여줍니다.

C++에서 가상 함수는 다형성을 지원하고 객체 지향 프로그래밍에서 매우 유용하게 활용됩니다.

참고 자료