본문 바로가기

Programming/[C++]

[C++] 연산자 함수를 만들지 못하는 연산자의 종류

* 연산자 함수를 만들지 못하는 연산자의 종류(오버로딩 제한)

 

c++의 모든 연산자들이 오버로딩의 대상이 되는 것은 아니다. 다음과 같이 오버로딩이 불가능한 연산자들도 있다.

 

.     멤버 접근 연산자

.*    멤버 포인터 연산자

::    범위 지정 연산자

?:    조건 연산자(3항 연산자)

sizeof    바이트 단위 크기 계산

typeid    RTTI 관련 연산자

static_cast    형변환 연산자

dynamic_cast    형변환 연산자

const_cast    형변환 연산자

reinterperet_cast    형변환 연산자

 

 

연산자에 대해서 제한하는 이유는 c++의 문법규칙을 보존하기 위해서다. 만약에 위의 연산자들까지 오버로딩을 허용해 버린다면, c++의 문법규칙에 어긋나는 문장의 구성이 가능해지고, c++을 보다 혼란스러운 언어로 만들 수 있기 때문이다.

 

참고로, 위의 연산자들을 오버로딩 해야만 하는 상황이 딱히 존재하지 않기 때문에 이 연산자들로 오버로딩을 굳이 하겠다는 생각을 할 필요는 없다.