가상 함수는 C++에서의 다형성(polymorphism)을 구현하는 핵심 요소입니다. 다형성은 객체지향 프로그래밍에서 매우 중요한 개념으로, 한 가지 동작을 여러 객체가 다르게 수행할 수 있는 기능을 말합니다. 이번 글에서는 가상 함수를 이용한 다형성의 실제적인 활용 사례에 대해 살펴보겠습니다.
다형성의 이점
다형성을 활용하면 여러 클래스가 같은 함수 이름을 가지고 있더라도 다양한 방식으로 호출할 수 있습니다. 이는 코드의 모듈화와 유지보수를 향상시켜줍니다. 가상 함수를 사용하면 실행 시간에 적절한 함수를 호출할 수 있기 때문에 유연하고 확장 가능한 코드를 작성할 수 있습니다.
다형성의 실제 활용 사례
예를 들어 도형(Shape) 클래스가 있고, 이를 상속받은 원(Circle) 클래스와 사각형(Rectangle) 클래스가 있다고 가정해봅시다. 각 클래스마다 calculateArea()
라는 함수를 가지고 있을 때, 가상 함수를 이용하여 이를 구현할 수 있습니다.
class Shape {
public:
virtual double calculateArea() {
return 0.0;
}
};
class Circle : public Shape {
private:
double radius;
public:
Circle(double r) : radius(r) {}
virtual double calculateArea() override {
return 3.14 * radius * radius;
}
};
class Rectangle : public Shape {
private:
double width;
double height;
public:
Rectangle(double w, double h) : width(w), height(h) {}
virtual double calculateArea() override {
return width * height;
}
};
위의 예제에서 calculateArea()
함수는 각 도형에 따라 다르게 동작하도록 구현되어 있습니다. 이렇게 가상 함수를 사용하면 다형성을 통해 각 도형마다 다른 면적을 계산할 수 있습니다.
결론
가상 함수를 이용한 다형성을 활용하면 유연하고 확장 가능한 코드를 작성할 수 있습니다. 이를 통해 클래스의 행동을 다양화시키고, 유연하게 변화에 대응할 수 있는 프로그래밍을 할 수 있습니다.
가상 함수와 다형성은 객체지향 프로그래밍에서 매우 중요한 개념이므로, 실제 개발에서 다양한 활용 사례를 통해 숙지하는 것이 중요합니다.