[C++] 연산자 오버로딩 #9
1. 연산자 함수
연산자 함수란 객체간의 연산이 시작될 때 호출되는 함수입니다.
연산자 함수는 클래스를 정의할 때 직접 만들 수 있습니다.
예를 들어 좌표를 나타내는 Position
이라는 객체가 있을 때,
아래 코드와 같이 연산자 함수를 사용한다면, Position
객체끼리 덧셈이나 뺄셈이 가능하게 됩니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <iostream>
class Position {
public:
int x;
int y;
int z;
Position(int x, int y, int z) {
this->x = x;
this->y = y;
this->z = z;
}
Position operator+(const Position& ref) const {
return Position(x + ref.x, y + ref.y, z + ref.z);
}
};
int main() {
Position a(1, 1, 1);
Position b(2, 2, 2);
Position c = a + b; // operator+ 함수 호출!
std::cout << c.x << " " << c.y << " " << c.z;
return 0;
}
1
3 3 3
operator
와 정의할 연산자를 이어 쓴 이름으로 함수를 만들면
그 연산자로 객체를 연산하려 할 때 정의된 함수가 실행됩니다.
또한 연산자 함수가 실행되는 객체는 연산자 기준 왼쪽에 있는 a
가 됩니다.
따라서 Position& ref
는 b를 참조하게 됩니다.
This post is licensed under
CC BY 4.0
by the author.