본문 바로가기

C++ Programming

연산자 오버로딩

멤버 연산자 함수

원래의 피연산자보다 인수의 개수가 항상 하나 더 적은데 +는 이항 연산자이므로 두 개의 피연산자를 취하지만 멤버 연산자 함수의 인수는 하나만 있으면 됨.

이 함수를 호출하는 객체인 *this가 암시적인 좌변이 되며 나머지 우변이 될 대상만 인수로 전달받음.

나 자신(this)과 연산될 대상이 누구인가만 알면 되는 것.

만약 ++ 단항 연산자를 멤버 연산자 함수로 오버로딩한다면 호출하는 객체 자체가 피연산자가 되므로 인수는 필요 없음. =, (), [], -> 연산자들은 반드시 멤버 연산자 함수로만 만들어야 함.


전역 연산자 함수

전역 연산자 함수는 원래의 피연산자와 같은 수의 인수를 가짐. +연산자가 이항 연산자이므로 operator+ 전역 연산자 함수는 두 개의 인수를 취하고 ++ 연산자는 단항 연산자이므로 operator ++ 전역 연산자 함수는 증가시킬 대상 하나만 인수로 전달받으면 됨. 암시적으로 전달되는 this가 없으므로 좌우변 모두 인수로 전달받아야 함


오버로딩의 대상이 아닌 것들

.(구조체 멤버연산자)

.*(멤버 포인터 연산자)

static_cast

reinterpret_cast

::(범위 연산자)

sizeof

dynamic_cast

new

?:(삼항 조건 연산자)

typeid

cosnt_cast

delete



증감연산자 오버로딩


operator ++ ( ... )

전위연산과 후위연산을 구분할 수 없으므로 후위 연산자 오버로딩 할 때에만 oprator ++ ( int ) 식으로 이용함 ++A는 operator ++ ( void ) 형태를 취함