C++ 노트 - 연산자 오버로딩
중복 정의 불가능 연산자
멤버 선택자 ( . )
멤버 객체 선택자 ( .* )
범위 지정 연산자 ( :: )
조건 연산자 ( ?: )
sizeof 연산자
중복 가능하지만 헷갈릴 수 있는 연산자
operator&
operator&&
operator||
operator
중복 정의한 모든 연산자는 파생 클래스로 상속된다.( = 연산자 제외 )
오버로딩의 제약사항
항 중 하나는 반드시 내가 만든 데이터형이어야 한다.
2항 연산자 -> 2항 연산자 , 1항 연산자 -> 1항 연산자
1항 연산자 -!> 2항 연산자, 2항 연산자 -!> 1항 연산자
연산자 우선순위오 결합순위는 바꿀 수 없다.
연산자 기호를 새로 만들 수 없다.
다음과 같은 함수로 만든다.
(데이터 타입) operator연산자 (매개변수);
a (연산자) b -> d.operator연산자(b) 와 같은 식으로 해석된다.
단항 연산자 : 형태가 거의 정해져 있다.
전위 연산자
!op, ~op, ++op, --op
Type& operator++(); -> 변한 뒤 값을 반환하기 때문에 &
의 형태
후위 연산자
op++, op--
Type operator++(int); -> 변하기 전의 값을 복사했다가 반환
매개변수 int는 의미없는 매개변수 -> 전위 연산자와 구별을 위해
2항 연산자에서 앞에 다른 데이터형이 오는 경우
앞의 데이터를 첫 번째 인자로 받는 operator를 만들어야 한다. -> 전역으로 선언
Type operator연산자 ( (앞의 데이터형) op1, Type op2 )
전역 함수에서 Type(내가 만든 객체)의 멤버 변수를 쓸 수 있게 하기 위해 -> 프렌드 선언
타입 변환 연산자
operator Type();
객체를 원하는 Type으로 변환해주는 함수를 만들 수 있다.
객체 내부에 선언.
멤버 선택자 ( . )
멤버 객체 선택자 ( .* )
범위 지정 연산자 ( :: )
조건 연산자 ( ?: )
sizeof 연산자
중복 가능하지만 헷갈릴 수 있는 연산자
operator&
operator&&
operator||
operator
중복 정의한 모든 연산자는 파생 클래스로 상속된다.( = 연산자 제외 )
오버로딩의 제약사항
항 중 하나는 반드시 내가 만든 데이터형이어야 한다.
2항 연산자 -> 2항 연산자 , 1항 연산자 -> 1항 연산자
1항 연산자 -!> 2항 연산자, 2항 연산자 -!> 1항 연산자
연산자 우선순위오 결합순위는 바꿀 수 없다.
연산자 기호를 새로 만들 수 없다.
다음과 같은 함수로 만든다.
(데이터 타입) operator연산자 (매개변수);
a (연산자) b -> d.operator연산자(b) 와 같은 식으로 해석된다.
단항 연산자 : 형태가 거의 정해져 있다.
전위 연산자
!op, ~op, ++op, --op
Type& operator++(); -> 변한 뒤 값을 반환하기 때문에 &
의 형태
후위 연산자
op++, op--
Type operator++(int); -> 변하기 전의 값을 복사했다가 반환
매개변수 int는 의미없는 매개변수 -> 전위 연산자와 구별을 위해
2항 연산자에서 앞에 다른 데이터형이 오는 경우
앞의 데이터를 첫 번째 인자로 받는 operator를 만들어야 한다. -> 전역으로 선언
Type operator연산자 ( (앞의 데이터형) op1, Type op2 )
전역 함수에서 Type(내가 만든 객체)의 멤버 변수를 쓸 수 있게 하기 위해 -> 프렌드 선언
타입 변환 연산자
operator Type();
객체를 원하는 Type으로 변환해주는 함수를 만들 수 있다.
객체 내부에 선언.
댓글
댓글 쓰기