Language/C++

[C++] 연산자 오버로딩

bugwasd 2016. 1. 4. 16:37

연산자 오버로딩은 일종의 C++와의 약속이다. operator라는 키워드와 연산자 기호를 묶어서 함수 이름을 정의하면 연산자를 이용해 함수를 호출하는 셈이다.

즉, p+10이라는 문장이 있고, p가 객체라면 p.operator+(10) 이라는 문장으로 해석하여 오버로딩한 함수를 호출하게 되는 것이다.


다음은 간단한 연산자 오버로딩의 예제이다.


1
2
3
4
5
6
7
8
9
10
11
class Point {
private:
    int x, y;
public:
    Point(int _x=0int _y=0) : x(_x), y(_y) {}
    Point operator+(int val);
};
Point Point::operator+(int val) {
    x+=val;
    y+=val;
}



위와 같이 연산자 오버로딩을 하면 다음과 같이 간단한 방법으로 포인트 객체의 x, y값을 한번에 증가시킬 수 있다.


1
2
Point p;
p+10;