: 함수명이 같고, 파라미터의 데이터형, 갯수가 다를때 name mangling을 통해서
컴파일러가 서로 다른 함수를 만든다는 개념이다.
cpp reference의 예를 통해 기계어에서는 어떻게 맹글링?이 되는지 확인을 해보자.
기계어
-> 결과를 보면 _Z8functioni 와 _Z8functiond 로 함수 이름이 변경된 상태로 함수가 정의된것을 확인할 수 있따.
함수 오버로딩은 static polymorphism?이라고 한다.(폴리모피즘)
왜냐하면 어떤 함수가 바인딩이 될기 compile 시간에 결정이 되기 때문이다.
<-> 이와 반대되는 개념으로는 dynamic polymorphism이 있다.
런타임에 결정이 되고, 예로는 virual- 상속에서 사용된다.
: 말그대로 연산자인 +, - 등의 오퍼레이터들을 오버로딩 한다는
의미이다.
: 덧셈, 뺄셈, 곱셈등 유저가 따로 만들어주면 된다.
홍정모님 강의 참고