[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++에서 가상 함수는 다형성을 지원하고 객체 지향 프로그래밍에서 매우 유용하게 활용됩니다.