새소식

💻 Programming (프로그래밍)/C++

[C++] 연산자 오버로딩 (operator overloading)

  • -

연산자 오버로딩이란

클래스에서 사용자가 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+() 라는 멤버함수로 치환해주기 때문에 함수처럼 오버로딩하여 사용할 수 있게 됩니다.

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.