Language/C++

[C++] 연산자 오버로딩(Operator Overloading)

0so0 2023. 7. 17. 15:23
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