C++ 에서 동적 다형성 구현하기

C++Beginner
지금 연습하기

소개

이 랩에서는 C++ 에서 다형성 (polymorphism) 의 개념을 구현할 것입니다. 다형성은 객체 지향 프로그래밍 (Object Oriented Programming) 의 개념으로, 단일 함수가 다양한 방식으로 사용될 수 있도록 합니다. 다형성에는 두 가지 유형이 있습니다: 컴파일 시간 다형성 (compile-time polymorphism) 또는 정적 다형성 (static polymorphism) 과 런타임 다형성 (runtime polymorphism) 또는 동적 다형성 (dynamic polymorphism) 입니다. 이 랩에서는 런타임 또는 동적 다형성에 중점을 둘 것입니다.

새로운 main.cpp 파일 생성

먼저, ~/project 디렉토리에 main.cpp라는 이름의 새로운 C++ 파일을 생성합니다:

cd ~/project
touch main.cpp

다형성을 구현하는 코드 추가

이 단계에서는 Shape라는 클래스를 생성합니다. Shape 클래스는 area()라는 가상 함수 (virtual function) 를 갖습니다. 그런 다음 Shape 클래스를 상속하고 가상 함수 area()를 재정의 (override) 하는 RectangleTriangle 두 개의 클래스를 생성합니다. 클래스가 생성되면 Shape 클래스의 객체 배열을 생성한 다음 배열을 반복하여 각 객체의 area() 함수를 호출합니다.

#include <iostream>
using namespace std;

class Shape {
    public:
        virtual float area() {
            return 0;
        }
};

class Rectangle: public Shape {
    public:
        float area() {
            cout << "Rectangle class area()" << endl;
            return 0;
        }
};

class Triangle: public Shape {
    public:
        float area() {
            cout << "Triangle class area()" << endl;
            return 0;
        }
};

int main() {
    Shape *shape;
    Rectangle rec;
    Triangle tri;

    shape = &rec;
    shape->area();

    shape = &tri;
    shape->area();

    return 0;
}

코드를 컴파일하고 실행

이 단계에서는 다음 명령을 사용하여 코드를 컴파일하고 실행합니다:

g++ main.cpp -o main
./main

위 프로그램의 출력은 다음과 같습니다:

Rectangle class area()
Triangle class area()

요약

이 랩에서는 C++ 에서 다형성 (Polymorphism) 개념을 구현하는 방법을 배웠습니다. Shape라는 가상 함수 (virtual function) 를 가진 클래스를 생성했습니다. 그런 다음 Shape 클래스를 상속하고 가상 함수 area()를 재정의 (override) 하는 RectangleTriangle 두 개의 클래스를 생성했습니다. 마지막으로, RectangleTriangle 클래스의 객체를 생성하고 기본 클래스 Shape의 객체를 사용하여 area() 함수를 호출하여 각 클래스에 대한 호출이 이루어지도록 했습니다.