부모 클래스를 포인터 형태로 선언하고 자식 클래스를 참조하여 같은 이름의 멤버 함수를 호출할 때 자식 클래스의 멤버함수가 아닌 부모 클래스의 멤버함수가 호출 된다.
이를 해결하기위해 virtual 키워드를 사용한 가상함수를 사용할 수 있다.
class Student : public Person
{
private:
int student_id_;
public:
Student(int sid, const string& name, int age); // 파생 클래스 생성자의 선언
virtual void ShowPersonInfo(); // 파생 클래스에서 상속받은 멤버 함수의 재정의
};