[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) 개념은 객체지향 프로그래밍에서 중요한 개념 중 하나로 여겨집니다.