본문 바로가기

Programming/C & C++

연산자 오버로딩(클래스의 멤버 함수로 작성법)

클래스의 연산자 함수를 정의하는 방법은 다음 두가지가 있다.

클래스의 멤버 함수로 작성한다.
전역 함수로 작성한다.

그 중 1번에 해당하는 방법을 알아보자.




리턴타입 Class::operator 연산자(인수 목록)

{
          함수 본체;
}

ex)    const Complex  operator+  (const Complex &T) const {
     //(리턴타입)        (함수이름)  (인수(피연산자)       (상수함수)

        Complex R;

        R.image = image + T.image;
        R.real = real + T.real;

        return R;
       } //inline 함수로 작성 예


ㅁ main에서의 사용법 : A+B <-> A.operator + (B) //A는 연산자함수를 호출하는 객체
                                                                        //B는 연산자함수로 전달되는 객체        

ㅁ const 의 사용 이유
    1.const Complex  operator+  (2.const Complex &T) 3.const
    1번 리턴되는 값도 상수이다.
    2번 피연산자, 즉 우변은 상수이다.
    3번 호출객체, 즉 좌변이 상수이다.


ㅁ 이상적인 연사자 오버로딩의 예

const Complex operator +(const Complex &T) const {

     Complex R;

     R.image = image + T.image;

     R.real = real + T.real;

     return R;

}

 
   



                   

반응형