virtual function
(가상 함수) 개념C++에서 가상 함수(virtual function) 는 다형성(polymorphism) 을 지원하기 위해 사용됩니다. 즉, 기반(Base) 클래스의 포인터 또는 참조를 사용하여 파생(Derived) 클래스의 함수가 호출되도록 하는 메커니즘 이다.
#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;
}
링커 오류 가 발생한다