Search

LV01 연산자 오버로딩

대부분의 기본 제공 연산자의 함수는 전역적으로 또는 클래스 단위로 다시 정의할 수 있습니다. 오버로드된 연산자는 함수로 구현됩니다.
오버로드된 연산자의 이름은 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
복사