연산자 오버로딩이란? 오버로딩이란 기존 함수에 새로운 의미를 부여하거나, 파라미터를 추가하거나, 새로운 것을 만들어 낸다는 개념이다. 연산자 오버로딩은, 연산자도 하나의 함수처럼 생각하여 이를 오버로딩한다는 개념이다. 기존의 정의되어있는 데이터 타입을 우리가 만든 연산자에도 대해서 동작하게 하는 것이다. 즉, 연산자 오버로딩은 객체 지향 프로그래밍(OOP)에서 다른 연산자들이 함수 인자를 통해 구현되는 것을 말한다. 예를 들어, 덧셈 연산자는 정수가 들어올때도 동작하고, 실수가 들어올때도 동작하게 만들어져있다. 이러한 덧셈연산자를 우리가 정의한 데이터 타입에 대해서도 동작하게 하는것이 연산자 오버로딩 이다. 대부분의 연산자는 자식까지 상속이 된다. 결국, 기억해야 하는 것은 연산자 operator 는 그..
Operator Overloading
Function Overloading : 함수의 이름이 같고 그 파라미터가 다를 때 name mangling을 통해서 컴파일러가 서로 다른 함수를 만들어 주는 것. 이 코드를 compiler explorer를 통해 어셈블리 코드를 확인해 보면 function(3), function(2.7) 은 각각에 맞는 함수를 콜 해주고 있고 이름이 바뀌어 있다. (_Z8functioni: ...) (_Z8functiond: ...) 이런 식으로 name mangling 된 것. 이렇기에 function overloading은 static polymorphism이라고도 불리는데, 그 이유는 어떤 함수가 바인딩 될 지 컴파일 시간에 결정이 되기 때문이다. 이와 비교되는 개념으로는 dynamic polymorphism이 ..