연산자 오버로딩이란
클래스에서 사용자가 C++ 에서 연산자들을 내 입맛대로 정의하고 사용할 있게 만들어줍니다.
연산자(+, - , *, / , = 등등)를 함수오버로딩처럼, 오버로딩을 하여 기능을 달리 쓰입니다.
아래의 예시는 x좌표, y좌표를 나타내는 클래스입니다.
class Pair {
private:
int x;
int y;
public:
Pair(int _x, int _y) : x(_x), y(_y) {}
void print() {
cout << "x: " << x << ", y: " << y << endl;
}
int getX() { return x; }
int getY() { return y; }
void operator+(Pair& n) {
x += n.getX(), y += n.getY();
}
};
int main(){
Pair a(1,2);
Pair b(2,1);
a+b;
a.print();
}
a좌표는 (1,2)
b좌표는 (2,1) 였고,
a+b를 통하여, a클래스의 x좌표, y좌표에 더하여 주었습니다.
이렇듯 연산자 오버로딩을 통해 클래스간 '+' 를 사용 할 수 있게됩니다.
더 완성된 함수기능을 내기 위해서는
Pair operator+*Pair &n){
return Pair(x + n.getX(), y+n.getY());
}
이렇듯 새로운 객체를 만들어내면 더 효과적으로 사용 할 수 있습니다.
Pair class가 'x' 심볼을 찾아낼때, 컴파일러 인터프리터는 '+'를 .operator+() 라는 멤버함수로 치환해주기 때문에 함수처럼 오버로딩하여 사용할 수 있게 됩니다.