C++의 가상 함수는 파생 클래스 개체의 종류를 모른 채 기본 클래스 포인터 목록을 만들고 파생 클래스의 메서드를 호출하는 데 사용합니다. 가상 기능은 런타임에 늦게 해결됩니다.
기본 클래스의 가상 함수가 한 번 멤버 함수로 선언된 경우 해당 기본 클래스에서 파생된 모든 클래스에서 가상 함수가 됩니다. 따라서 가상 기본 클래스 함수의 재정의 버전을 선언하면서 파생 클래스에서는 virtual 키워드를 사용할 필요가 없습니다.
예시 코드
#include<iostream> using namespace std; class B { public: virtual void s() { cout<<" In Base \n"; } }; class D: public B { public: void s() { cout<<"In Derived \n"; } }; int main(void) { D d; // An object of class D B *b= &d; // A pointer of type B* pointing to d b->s(); // prints"D::s() called" return 0; }
출력
In Derived