다형성은 객체지향 언어의 특징 중 하나이다.

다형성은 사전적으로 다음을 의미한다.

동질이상(同質異像)
모습은 같은데 형태는 다르다.

이를 컴퓨터의 관점으로 생각하면 다음으로 해석할 수 있다.

문장은 같은데 결과가 다르다.

 
class First
{
	public :
		virtual void SimpleFunc() { cout<<"First"<<endl; }
};
 
class Second : public First
{
	public :
		virtual void SimpleFunc() { cout<<"Second"<<endl; }
};
 
int main(void)
{
	First *ptr = new First();
	ptr -> SimpleFunc(); // 아래에 동일한 문장이 존재한다.
	delete ptr;
 
	ptr = new Second();
	ptr -> SimpleFunc(); // 위에 동일한 문장이 존재한다.
	delete ptr;
 
	return (0);
}
 

위 예제에서 ptr은 동일한 포인터 변수이지만, ptr이 참조하는 객체의 자료형이 다르기 때문에 다른 결과를 출력한다. 이것이 ‘다형성’의 예이다.


참고자료

윤성우의_열혈_cpp_프로그래밍