본문 바로가기
Dev Language/C++

함수 오버로딩

by 미티치 2016. 12. 6.

함수 오버로딩

 


C++은 오버로딩 된 함수들 중 어느 것이 어느 것인지 어떻게 추적할까?


C++은 각각의 함수들에 비밀 증명을 발급한다. 프로그램을 작성하여 컴파일하기 위해 C++ 개발 도구의 편집기를 사용하면, C++ 컴파일러는 사용자를 대신하여 이름 장식 또는 이름 맹글링(NAME MANGLING)이라는 마술을 부린다. 그것은 함수 원형에 지정되어 있는 형식 매개변수의 데이터 형을 기반으로 각각의 함 수 이름을 암호화하는 것이다.

 

예를 들어 long MyFunctionFoo(int, float); 이라는 이름 장식이 되어있지 않은 함수 원형이 있다면, 컴파일러는 스스로의 용도를 위해 이 형식을  ?MyFunctionFoo@@YAXH@Z 라고 내부 형식으로 변환한다.  이렇게 겉보기 장식을 통해 매개변수의 개수와 데이터 형을 암호화하는 것이다.

'Dev Language > C++' 카테고리의 다른 글

참조 변수 & 복사 생성자  (1) 2016.12.06
if문과 switch문  (0) 2016.12.06
배열과 포인터  (0) 2016.12.05
함수 원형이 필요한 이유  (0) 2016.12.05
스택에 저장되는 값 (자료 백업)  (0) 2016.11.29