728x90
반응형
SMALL
연산자 오버로딩에 대한 정리(+예제)
연산자 오버로딩(Operator Overloading)
기존 정의되어있는 연산자를 재정의하여 사용자 정의 클래스로 사용하는것
- 객체들의 연산을 편리하게 하기 위함
- operator 연산자 형태로 함수 이름 선언
- 오버로딩 불가능한 연산자
. | 멤버 접근 연산자 |
.* | 멤버 포인터 연산자 |
:: | 범위 지정자 |
?: | 조건연산자 |
예시
Virus라는 class를 정렬할때, 멤버 변수인 size를 기준으로 정렬하고자할때 사용
class Virus {
public:
int size; // 바이러스 크기
int x; // 바이러스 x 좌표
int y; // 바이러스 y 좌표
int second; // 바이러스 전염 시간
// Virus 생성자
Virus(int size, int x, int y, int second) {
this->size = size;
this->x = x;
this->y = y;
this->second = second;
}
// '<' 연산자 오버로딩 -> 바이러스 크기 기준 오름차순 정렬
bool operator < (Virus& other) {
return this->size < other.size;
}
};
class 에는 '<' 연산자가 정의되어있지 않아, < 연산자를 정의하지 않고 사용할 경우 에러 발생
위와 같이 '<' 연산자 오버로딩 사용시 객체끼리 sort 가 가능함
vector<Virus> virusmap;
// 오름 차순으로 정렬
sort(virusmap.begin(), virusmap.end());
sort 함수를 사용하지 않고, 별도로 compare 함수를 만들어서 사용해도 됨
728x90
반응형
LIST
'Language > C++' 카테고리의 다른 글
[C++] 클래스(Class) (0) | 2023.09.17 |
---|---|
[C++] 띄어쓰기 포함 문자열 입력 (0) | 2023.09.12 |
[C++] STL String 사용법 및 예제 (0) | 2023.08.15 |
[C++] STL Pair 사용법 및 예제 (0) | 2023.07.10 |
[C++] STL Vector 사용법 및 예제 (0) | 2023.07.10 |