[C++ 언어-막코딩] 18장 연산자 오버로딩 함수

Words
214
Reading
1 min
Listen
Play
7y

[C++ 언어-막코딩] 18장 연산자 오버로딩 함수



오늘은 연산자를 직접 구현해보는 시간을 갖도록 하겠습니다. 일반적인 연산자 +, -, *, / 등 다양한 연산자들이 있는데 이 연산자를 직접 만들어 사용하는 방법을 실습하도록 하죠.

1. operator 연산자 오버로딩


일반적인 덧셈(+)은 다음과 같습니다.

c=a+b;

여기서 덧셈(+) 연산자를 만나 a,b를 더하는 계산을 수행합니다. 이 덧셈 함수를 만들 수 있는데 다음과 같은 operator 키워드를 이용하여 만들 수 있습니다.

클래스명 operator연산자(인자){
    연산처리식;
}

예)

AAA operator+(const AAA &p){
    AAA s;
    s=a+p.a;
    return s;
}

이렇게 구현 할 수 있습니다.

AAA op1;
AAA op2;
AAA op3;
    
op3=op1+op2; 

이렇게 클래스 객체 덧셈을 수행 할 수 있게 됩니다.

위 op1+op2 표현은 아래와 같은 표현입니다.

op1.operator+(op2);

'+'기호만으로 operator+()함수를 지칭합니다. 이렇게 표현 함으로 기존의 '+' 연산을 무시하고 직접 만든 '+'연산을 수행합니다. 이런 걸 연산자 오버로딩이라고 합니다.

한번 몇가지 간단하게 코딩해서 실습 결과를 살펴보도록 하죠.

2. 코딩


  • 조건 : 덧셈, 뺄셈, 대입 연산자를 오버로딩 함수로 표현하라

[전체소스]

#include 

using namespace std;

class AAA{
private:
    int a;  
public: 
    AAA operator=(int _a){
        a=_a;
    }
    AAA operator+(const AAA &p){
        AAA s;
        s=a+p.a;
        return s;
    }
    AAA operator+(int b){
        AAA s;
        s=a+b;
        return s;
    }
    AAA operator-(const AAA &p){
        AAA s;
        s=a-p.a;
        return s;
    }
    void output(){
        cout<<a<<endl;
    }
};

int main(int argc, char** argv) {
    
    AAA op1;
    AAA op2;
    AAA op3;
    
    op1=10; //op1.operator=(10);
    op2=20; //op2.operator=(20);

    op1.output();
    op2.output();
    
    op3=op1+op2; //op3=op1.operator+(op2);
    op3.output();
    
    op3=op1+100; //op3=op1.operator+(100);
    op3.output();
    
    op3=op1-op2; //op3=op1.operator-(op2);
    op3.output();
    
    return 0;
}

객체 대입 연산을 수행하고 객체 덧셈, 뺄셈을 수행합니다. 추가로 객체+상수를 더하는 연산도 수행하도록 실습 코딩을 만들어 봤네요.

[결과]

a1.jpg

결과는 우선 op1, op2에 값을 대입한 값을 출력하고 다음으로 op1+op2의 값, op1+100의 값, op1-op2값을 순서대로 출력 된 결과 입니다.

마무리


오늘의 내용은 연사자 함수를 직접 만들어 보았습니다. 그리고 그 함수는 기존의 연산자와 중복 된 이름을 가지고 있는데 이 함수를 오버로딩 함수라고 합니다. 지난 시간에 오버로딩 함수에 대해 배웠었는데 이번에 연산자 함수를 통해 복습을 하게 되었네요.


Sponsored ( Powered by dclick )

dclick-imagead

[C++ 언어-막코딩] 18장 연산자 오버로딩 함수 | Ecency