Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++ 연산자 오버로딩: '-' 연산자로 두 숫자 더하기

연산자 오버로딩이란?

연산자 오버로딩(Operator Overloading)은 C++의 핵심 개념 중 하나로, 다형성(polymorphism)의 한 형태입니다. 기존에 정의된 연산자에 사용자가 직접 새로운 의미를 부여함으로써, 사용자 정의 데이터 타입에 대해서도 해당 연산을 수행할 수 있게 해주는 기능입니다. 예를 들어 '+' 연산자를 오버로딩하면 정수형 덧셈뿐만 아니라 문자열 연결(concatenation)처럼 다양한 데이터 타입에 맞는 동작을 구현할 수 있습니다.

입력

10 20
20 30

출력

30
50

동작 원리

이 예제에서는 '-' 연산자를 오버로딩하여 두 숫자의 덧셈을 수행합니다. 이항 연산자(binary operator)는 연산을 수행하기 위해 하나의 객체를 인수로 요구하며, 프렌드 함수(friend function)를 사용할 경우에는 두 개의 인수가 필요합니다.

연산자는 ob1-ob2 형태로 호출됩니다. 이때 연산자 앞에 있는 객체(ob1)가 함수를 호출하는 역할을 하고, 연산자 뒤에 있는 객체(ob2)는 함수의 인수로 전달됩니다. 즉, ob1은 호출하는 객체이고 ob2는 함수에 넘겨지는 인수입니다.

여기서는 ob1의 x, y 멤버 변수에 각각 10과 20을, ob2의 x, y 멤버 변수에 각각 20과 30을 저장한 뒤 연산을 수행합니다.

예제 코드

#include <iostream>
using namespace std;
class sum {
    public:
        int x, y, z;
    void getdata(int a, int b) {
        x=a;
        y=b;
    }
    void display() {
        cout<<"\nSum of X:"<<x;
        cout<<"\nSum of Y:"<<y;
    }
    void operator-(sum &);
};
void sum::operator-(sum &ob) {
    x=x+ob.x;
    y=y+ob.y;
    display();
}
int main() {
    sum ob1, ob2;
    ob1.getdata(10,20);
    ob2.getdata(20,30);
    ob1-ob2;
}