..

Search

53) 오버로딩의 제약 사항

53) 오버로딩의 제약 사항

오버로딩의 제약 사항


오버로딩의 제약 사항

C++에서 연산자를 오버로딩할 때에는 다음과 같은 사항을 지켜야 합니다.

 

1. 전혀 새로운 연산자를 정의할 수는 없습니다.

ex) 몫을 나타내기 위한 %%라는 연산자를 새롭게 정의할 수 없습니다.

 

2. 기본 타입을 다루는 연산자의 의미는 재정의할 수 없으며, 따라서 오버로딩된 연산자의 피연산자 중 하나는 반드시 사용자 정의 타입이어야 합니다.

ex) 두 개의 double 형에 대한 덧셈 연산자(+)가 뺄셈을 수행하도록 오버로딩할 수 없습니다.

 

3. 오버로딩된 연산자는 기본 타입을 다루는 경우에 적용되는 피연산자의 수, 우선순위 및 그룹화를 준수해야 합니다.

ex) 나눗셈 연산자(/)는 이항 연산자이므로 단항 연산자로 오버로딩할 수 없습니다.

 

4. 오버로딩된 연산자는 디폴트 인수를 사용할 수 없습니다.


오버로딩할 수 없는 연산자

C++에서는 다음 표의 연산자는 오버로딩할 수 없습니다.

연산자 설명
:: 범위 지정 연산자
. 멤버 연산자
.* 멤버 포인터 연산자
? : 삼항 조건 연산자
sizeof 크기 연산자
typeid 타입 인식
const_cast 상수 타입 변환
dynamic_cast 동적 타입 변환
reinterpret_cast 재해석 타입 변환
static_cast 정적 타입 변환

멤버 함수로만 오버로딩할 수 있는 연산자

C++에서 다음 표의 연산자는 전역 함수가 아닌 멤버 함수로만 오버로딩할 수 있습니다.

연산자 설명
= 대입 연산자
() 함수 호출 
[] 배열 인덱스
-> 멤버 접근 연산자

연습문제