연산자 오버로드
operator 키워드 무엇을 지정 하는 함수를 선언 합니다. operator-symbol 클래스의 인스턴스에 적용 하는 경우를 의미 합니다.이 연산자는 하나 이상의 의미를 제공 하거나 "오버 로드".컴파일러가 연산자 연산자는 피연산자의 형식을 검사 하 여 다른 의미 사이의 구별 합니다.
type operator operator-symbol ( parameter-list )
설명
전역적으로 또는 클래스에서 클래스 별로 가장 기본 제공 연산자의 함수를 재정의할 수 있습니다.오버 로드 된 연산자는 함수로 구현 됩니다.
오버 로드 된 연산자의 이름이 operatorx, 어디 x 연산자는 다음 표에 표시 된 대로입니다.예를 들어, 더하기 연산자를 오버 로드 하려면 호출 하는 함수 정의 operator+.마찬가지로, 더하기/할당 연산자를 오버 로드 하려면 +=, 호출 하는 함수를 정의 operator+=.
Redefinable 연산자
Operator |
Name |
형식 |
---|---|---|
, |
쉼표 |
Binary |
! |
논리 부정 연산자 |
단항 |
!= |
같지 않음 |
Binary |
% |
나머지 연산자 |
Binary |
%= |
나누기 할당 |
Binary |
& |
비트 AND |
Binary |
& |
주소를 |
단항 |
&& |
논리곱 |
Binary |
&= |
비트 AND 할당 |
Binary |
( ) |
함수 호출 |
— |
( ) |
캐스트 연산자 |
단항 |
* |
곱하기 |
Binary |
* |
포인터 역참조 |
단항 |
*= |
곱하기 할당 |
Binary |
+ |
추가 |
Binary |
+ |
단항 더하기 |
단항 |
++ |
증가 1 |
단항 |
+= |
더하기 할당 |
Binary |
– |
빼기 |
Binary |
– |
단항 부정 연산자 |
단항 |
–– |
감소 1 |
단항 |
–= |
빼기 할당 |
Binary |
–> |
멤버 선택 |
Binary |
–>* |
포인터 멤버 선택 |
Binary |
/ |
나누기 |
Binary |
/= |
나누기 할당 |
Binary |
< |
보다 작음 |
Binary |
<< |
왼쪽 <Shift> |
Binary |
<<= |
왼쪽된 시프트 할당 |
Binary |
<= |
작거나 같음 |
Binary |
= |
할당 연산 |
Binary |
== |
같음 |
Binary |
> |
보다 큼 |
Binary |
>= |
크거나 같음 |
Binary |
>> |
오른쪽 Shift |
Binary |
>>= |
오른쪽 시프트 할당 |
Binary |
[ ] |
배열 아래 첨자 |
— |
^ |
논리합 |
Binary |
^= |
배타적 OR 할당 |
Binary |
| |
포함 비트 OR |
Binary |
|= |
비트 OR 할당 (포함) |
Binary |
|| |
논리합 |
Binary |
~ |
1의 보수 |
단항 |
delete |
Delete |
— |
new |
New |
— |
conversion operators |
변환 연산자 |
단항 |
1 두 가지 버전의 단항 증가 및 감소 연산자가: preincrement 및 postincrement입니다.
참조 하십시오 연산자 오버 로드에 대 한 일반 규칙 에 대 한 자세한 내용은.다음 항목에서는 다양 한 종류의 오버 로드 된 연산자에 대 한 제약 조건은 설명 합니다.
다음 표에 나와 있는 연산자는 오버 로드할 수 없습니다.전처리기 기호 테이블이 포함 # 및 ##.
Nonredefinable 연산자
Operator |
Name |
. |
멤버 선택 |
.* |
포인터 멤버 선택 |
:: |
범위 결정 |
? : |
조건 |
# |
전처리기 문자열 변환 |
## |
전처리기를 연결 합니다. |
코드에서 발생 하는 오버 로드 된 연산자 일반적으로 암시적으로 컴파일러에서 호출 됩니다 있지만 같은 방식으로 모든 구성원이 명시적으로 호출 될 수 있습니다 또는 비멤버 함수가 호출 됩니다.
Point pt;
pt.operator+( 3 ); // Call addition operator to add 3 to pt.
예제
다음 예제에서는 오버 로드는 + 추가 두 복잡 한 번호를 입력 하는 결과 반환 하는 연산자입니다.
// operator_overloading.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;
struct Complex {
Complex( double r, double i ) : re(r), im(i) {}
Complex operator+( Complex &other );
void Display( ) { cout << re << ", " << im << endl; }
private:
double re, im;
};
// Operator overloaded using a member function
Complex Complex::operator+( Complex &other ) {
return Complex( re + other.re, im + other.im );
}
int main() {
Complex a = Complex( 1.2, 3.4 );
Complex b = Complex( 5.6, 7.8 );
Complex c = Complex( 0.0, 0.0 );
c = a + b;
c.Display();
}
Output
6.8, 11.2