[ CnUnix ] in KIDS 글 쓴 이(By): yoojk (노니머해) 날 짜 (Date): 1994년02월15일(화) 18시44분40초 KST 제 목(Title): polymorphism 과 overloading 사실 말하자면 저도 잘은 모르지만 대충 말하자면 거의 같은 거에요. 둘 다 사용된 함수가 (혹은 overloading의 경우에는 특정 기호까지도) 문맥에 따라서 서로 다른 의미를 가질 수 있음을 뜻하고요. 다시 말하면 그 개념들이 C++에서 독창적으로 나온게 아니라 그 이전에 딴데서 많이 연구되었음을 뜻해요. 제 생각에는 overloading이 조금 더 포괄적인 의미 같군요. 예를 들면 A(1) 에서 괄호의 쓰임새는 (특히 FORTRAN의 경우에) overloading 되었다고 말하는데 그 이유는 괄호의 뜻이 A라는 배열의 원소를 참조하기 위해 쓰였을 수도 있고, 또는 A라는 함수의 argument를 묶어주기 위해서 쓰였을 수도 있다는 거죠. 반면에 polymorphism은 함수나 연산자의 경우에만 한정되어 있는 거 같아요. 즉 1+2 의 plus 기호는 정수 연산을 뜻하지만 1.0 + 2.0 의 plus 기호는 실수 연산을 뜻하지요. (plus의 경우는 정수연산과 실수연산의 차이가 눈에 잘 안띄겠지만 나눗셈 연산의 경우, 정수 나눗셈에도 기냥 / 기호를 쓴다면, 차이를 확실히 느끼실 수 있습니다.) 지금까지는 일반적인 얘기들이었고 C++에서의 경우에, 같은 함수이름을 서로 다른 type의 인자들로 호출해서 각각 독특한 기능을 수행하도록 프로그램 한다면 굳이 overloading과 polymorphism의 차이를 구별할 수 없을 것 같군요. 도움이 되었길... |