[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++에서 가상 함수와 다형성은 객체 지향 프로그래밍의 핵심적인 요소로, 복잡한 시스템을 구현할 때 유용하게 활용됩니다.
참고 문헌:
- https://en.cppreference.com/w/cpp/language/virtual
- https://www.learncpp.com/cpp-tutorial/126-pure-virtual-functions-abstract-classes-and-interface-classes/