대부분의 기본 제공 연산자의 함수는 전역적으로 또는 클래스 단위로 다시 정의할 수 있습니다. 오버로드된 연산자는 함수로 구현됩니다.
오버로드된 연산자의 이름은 x입니다operator. 여기서 x는 다음 표에 표시된 연산자입니다. 예를 들어 더하기 연산자를 오버로드하려면 operator+라는 함수를 정의합니다. 마찬가지로 더하기/대입 연산+=자를 오버로드하려면 operator+=라는 함수를 정의합니다.
다시 정의할 수 있는 연산자
작업 | 이름 | 형식 |
, | Comma | 이진 |
! | 논리 NOT | 단항 |
!= | 같지 않음 | 이진 |
% | Modulus | 이진 |
%= | 모듈러스 대입 | 이진 |
& | 비트 AND | 이진 |
& | Address-of | 단항 |
&& | 논리적 AND | 이진 |
&= | 비트 AND 대입 | 이진 |
( ) | 함수 호출 | — |
( ) | 캐스트 연산자 | 단항 |
* | 곱하기 | 이진 |
* | 포인터 역참조 | 단항 |
*= | 곱하기 할당 | 이진 |
+ | 더하기 | 이진 |
+ | 단항 더하기 | 단항 |
++ | 증 분 1 | 단항 |
+= | 더하기 할당 | 이진 |
- | 빼기 | 이진 |
- | 단항 부정 연산자 | 단항 |
-- | 감소 1 | 단항 |
-= | 빼기 할당 | 이진 |
-> | 멤버 선택 | 이진 |
->* | 멤버 포인터 선택 | 이진 |
/ | 나누기 | 이진 |
/= | 나누기 할당 | 이진 |
< | 보다 작음 | 이진 |
<< | 왼쪽 시프트 | 이진 |
<<= | 왼쪽 시프트 할당 | 이진 |
<= | 보다 작거나 같음 | 이진 |
= | 양도 | 이진 |
== | Equality | 이진 |
> | 보다 큼 | 이진 |
>= | 크거나 같음 | 이진 |
>> | 오른쪽 시프트 | 이진 |
>>= | 오른쪽 시프트 할당 | 이진 |
[ ] | 배열 첨자 | — |
^ | 배타적 OR | 이진 |
^= | 배타적 OR 할당 | 이진 |
| | 포괄적 비트 OR | 이진 |
|= | 포괄적 비트 OR 대입 | 이진 |
|| | 논리적 OR | 이진 |
~ | 1의 보수 | 단항 |
delete | 삭제 | — |
new | New | — |
conversion operators | conversion operators | 단항 |
다음 예제에서는 연산자를 + 오버로드하여 두 개의 복소수를 추가하고 결과를 반환합니다.
C++복사
// 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; }
//Complex operator+( Complex &other )
//{
//return Complex( re + other.re, im + other.im )
//};
}
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();
}
C++
복사
Output복사
6.8, 11.2
Plain Text
복사