[부트캠프] 다형성

Claire·2024년 9월 3일

다형성

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 멤버 함수 호출
profile
SEO 최적화 마크업 개발자입니다.

0개의 댓글