Poly + morphism의 합성어로 "여러 형태"라는 뜻을 가지고 있으며, 오버로딩과 오버라이딩이 대표적인 예시이다.
Staff* emp = (Staff*)&____
1) Staff* emp = (Staff*)&rgl;
2) Staff* emp = (Staff*)&tmp;
3) Staff* emp = (Staff*)&slm;
cout << emp->PayCheck() << endl;
// ___ 자리에 어떠한 값을 넣어주냐에 따라 호출되는 함수가 결정이 남
즉, 어떠한 값을 넘겨주느냐에 따라 return값이 달라진다는 것을 의미한다.
Permanent rgl("kim", "suwon", 300);
Temporary tmp("park", "seoul", 10, 20);
SalesMan slm("jung", "boondang", 300, 50);
cout << rgl.PayCheck() << endl; // Permanent 멤버 함수 호출
cout << tmp.PayCheck() << endl; // Temporary 멤버 함수 호출
cout << "급여: " << slm.PayCheck() << endl; // SalesMan 멤버 함수 호출