Programming/C++

연산자 오버로딩

DDang goon 2021. 1. 4. 16:28

연산자 오버로딩은 C++에서 제공하는 기본 타입이 아닌 클래스 타입, 즉 사용자 정의 타입에도 연산자를 사용할 수 있게 하는 문법입니다.

 

장점

컴파일러 내부에 정의되지 않은 타입의 연산이 가능하여 코드의 직관성과 가독성을 좋게 할 수 있습니다.

 

#include <iostream>
using namespace std;

class Point {
	int x;
	int y;
public:
	Point(int _x = 0, int _y = 0) : x(_x), y(_y) {}
	void Print() const { cout << x << "," << y << endl; }
	Point operator+(Point arg)
	{
		Point value;
		value.x = x + arg.x;
		value.y = y + arg.y;
		return value;
	}
	void operator+=(Point arg)
	{
		x = x + arg.x;
		y = y + arg.y;
	}
};

void main()
{
	Point p1(1, 2), p2(3, 4);
	Point p3 = p1 + p2;
	p1 += p2;
	p1.Print();
	p3.Print();
}

operator+ 와 +=을 사용해 사용자정의 클래스의 연산자를 정의하였습니다.