더북(TheBook)

1.3.10 오버로딩(Overloading)

C++의 매우 강력한 기능 중 하나는 프로그래머가 새로운 타입에 대해 연산자들을 정의할 수 있다는 점이다. 이에 대해서는 2.7절에서 설명할 것이다. 내장 타입들의 연산자는 변경할 수 없다. 그러나 내장 타입들이 새로운 타입과 어떻게 상호 작용할지를 정의할 수는 있다. 즉, 행렬의 곱셈과 같은 혼합 연산들을 오버로딩할 수 있다.

대부분의 연산자는 오버로딩할 수 있다. 오버로딩할 수 없는 연산자는 다음과 같다.

::                 스코프(범위) 지정

.                   멤버 선택 (C++17에 추가될 예정*)

.*                 포인터를 통한 멤버 선택

?:                 조건부

sizeof          타입이나 오브젝트의 크기

sizeof...       인수의 개수

alignof         타입이나 오브젝트의 메모리 맞춤

typeid           타입 식별자

우리는 C++의 연산자 오버로딩을 통해 연산자를 자유롭게 재정의할 수 있지만, 이 자유로움을 현명하게 사용해야 한다. 연산자 오버로딩에 대한 내용은 다음 장(2.7절)에서 연산자를 오버로딩 할 때 다시 다룰 것이다.

 

* C++17 표준에 추가되지 않았다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.