1.3.10 오버로딩(Overloading)
C++의 매우 강력한 기능 중 하나는 프로그래머가 새로운 타입에 대해 연산자들을 정의할 수 있다는 점이다. 이에 대해서는 2.7절에서 설명할 것이다. 내장 타입들의 연산자는 변경할 수 없다. 그러나 내장 타입들이 새로운 타입과 어떻게 상호 작용할지를 정의할 수는 있다. 즉, 행렬의 곱셈과 같은 혼합 연산들을 오버로딩할 수 있다.
대부분의 연산자는 오버로딩할 수 있다. 오버로딩할 수 없는 연산자는 다음과 같다.
:: 스코프(범위) 지정
. 멤버 선택 (C++17에 추가될 예정*)
.* 포인터를 통한 멤버 선택
?: 조건부
sizeof 타입이나 오브젝트의 크기
sizeof... 인수의 개수
alignof 타입이나 오브젝트의 메모리 맞춤
typeid 타입 식별자
우리는 C++의 연산자 오버로딩을 통해 연산자를 자유롭게 재정의할 수 있지만, 이 자유로움을 현명하게 사용해야 한다. 연산자 오버로딩에 대한 내용은 다음 장(2.7절)에서 연산자를 오버로딩 할 때 다시 다룰 것이다.
* C++17 표준에 추가되지 않았다.