[c++] 가상 함수와 약속된 함수(overridden function)의 관계

가상 함수(virtual function)

가상 함수는 베이스 클래스(base class)에서 정의되고 파생 클래스(derived class)에서 재정의(override) 될 수 있는 함수입니다. 파생 클래스에서 재정의된 가상 함수는 런타임에 객체의 실제 형식에 따라 호출됩니다.

가상 함수를 선언하려면 함수 정의 앞에 virtual 키워드를 사용해야 합니다. 예를 들어:

class Base {
public:
    virtual void display() {
        cout << "Base display" << endl;
    }
};

class Derived : public Base {
public:
    void display() override {
        cout << "Derived display" << endl;
    }
};

약속된 함수(overridden function)

약속된 함수는 파생 클래스에서 베이스 클래스의 가상 함수를 재정의 하는 함수입니다. 베이스 클래스에서 가상 함수가 선언되어 있고 파생 클래스에서 이 함수를 재정의하여 호출하는 것을 말합니다.

만약 파생 클래스에서 가상 함수를 재정의하지 않아도 되는 경우, override 키워드를 사용하여 컴파일러에게 해당 함수가 베이스 클래스의 가상 함수임을 서술하는 것이 좋습니다.

class Base {
public:
    virtual void display() {
        cout << "Base display" << endl;
    }
};

class Derived : public Base {
public:
    void display() override {
        cout << "Derived display" << endl;
    }
};

따라서, 가상 함수와 약속된 함수는 C++에서 상속과 다형성을 구현하는 효과적인 방법으로 사용됩니다.

이를 통해, 프로그래밍 언어를 사용하여 다양한 유형의 객체를 다룰 때, 코드를 더 유연하게 작성하고, 코드의 재사용성을 높일 수 있습니다.

(참고문헌: cplusplus.com)