다음을 통해 공유


연산자 오버로드

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

참고 항목

참조

C + + 연산자

C + + 키워드