Function Overloading : 함수의 이름이 같고 그 파라미터가 다를 때 name mangling을 통해서 컴파일러가 서로 다른 함수를 만들어 주는 것. 이 코드를 compiler explorer를 통해 어셈블리 코드를 확인해 보면 function(3), function(2.7) 은 각각에 맞는 함수를 콜 해주고 있고 이름이 바뀌어 있다. (_Z8functioni: ...) (_Z8functiond: ...) 이런 식으로 name mangling 된 것. 이렇기에 function overloading은 static polymorphism이라고도 불리는데, 그 이유는 어떤 함수가 바인딩 될 지 컴파일 시간에 결정이 되기 때문이다. 이와 비교되는 개념으로는 dynamic polymorphism이 ..