: c++의 경우 함수를 중복정의가 가능하다.
어셈블러에서 중복정의를 구분하기 위해서 사용된다.
-> 어셈블러에서도 중복정의를 기계어로 구분짓지 않으면 모호성 발생하지 않을까?
main
{
func(); // 반환 타입 안받고 호출하자. 이렇게 해도 됨.
}
1) 컴파일러가 컴파일 시간에 심볼의 이름을 변경하는 현상
-> 어셈블러로 변경할 때 오버로딩 함수가 다르게 만들어진것을 확인할 수 있음.
2) 함수 오버로딩, namespace, template 등의 문법.
명령 프롬프트 작성하기
g++ test2.cpp -S
notepad test2.s
결과 : int형은 squarei로 , double형은 squared로
nameMangling이 되는 모습을 확인할 수 있음.
c++에서는 오버로딩에 의해 동일한 함수명이지만,
여러가지 인자로 구성된 함수를 만들 수 있음.
but, 모호성이 발생할 수 있다는 사실을 인지해야 함.
: f2 의 경우, 암시적형변환이 발생한 것임.
:: 함수 포인터 타입과 함수 타입을 작성했는데, 둘은 다른 타입임.
여태껏 함수의 이름으로 &연산자 없이 함수포인터를 설정했지만, 그것을 암시적인 것임.
typeid를 이용해 함수 포인터 와 함수 형식 이 다르게 출력됨을 확인할 수 있음.
: basic 강의 참고.