viurtual function

C++의 virtual function (가상 함수) 개념

C++에서 가상 함수(virtual function) 는 다형성(polymorphism) 을 지원하기 위해 사용됩니다. 즉, 기반(Base) 클래스의 포인터 또는 참조를 사용하여 파생(Derived) 클래스의 함수가 호출되도록 하는 메커니즘 이다.

동적 바인딩(dynamic binding)

#include <iostream>
using namespace std;

class Base {
public:
    virtual void show() { // 가상 함수 선언
        cout << "Base 클래스의 show()" << endl;
    }
};

class Derived : public Base {
public:
    void show() override { // 오버라이딩된 함수
        cout << "Derived 클래스의 show()" << endl;
    }
};

int main() {
    Base* b = new Derived(); // 기반 클래스 포인터로 파생 클래스 객체를 가리킴
    b->show(); // "Derived 클래스의 show()" 출력 (가상 함수 덕분)

    delete b;
    return 0;
}

가상 함수를 구현하지 않는다면?

class Base {
public:
    virtual void show(); // 구현 없음!
};

class Derived : public Base {
public:
    void show() override {
        cout << "Derived 클래스의 show()" << endl;
    }
};

int main() {
    Base* b = new Derived();
    b->show();  // **링커 오류 발생**
    delete b;
}

링커 오류 가 발생한다