Operator란?

BS_Lee·2024년 5월 6일
0

C++

목록 보기
13/15

연산자를 오버로딩하여 사용자 정의 데이터 타입에 대해서 연산 동작을 정의하는 함수이다.

// operator
const CMyString& operator=(const TCHAR* p);

미리 정해둔 CMyString클래스와 TCHAR 타입이 대입이 될 때, 동작하는 함수이다.

일반 함수와 operator함수의 차이점?

  • 오퍼레이터 함수는 CmyString + TCHAR 타입에 의해서 호출이 된다.
    • 컴파일 시, 자동적으로 컴파일러가 컴파일하면서 오퍼레이터 함수와 매핑시켜준다.
  • 피연산자의 수
    • 오퍼레이터는 두개의 연산자만 받을 수 있지만
    • 일반함수는 하나 이상의 인자를 받을 수 있다.

operator를 사용하는 이유?

  • 가독성을 위해서 사용함.
    • add(a,b)보다는 a + b가 가독성이 더 뛰어나다.
  • 표준 라이브러리 코드 간에 일관성을 유지하고 사용자 정의 타입에도 적용 가능하다.
  • 두 클래스 간에 +를 오버로딩하여 합을 계산할 수 있다.

코드예제

#include <iostream>

class MyClass {
	int value;
	
public:
	MyClass(int val) : value(val) {};
	
	// const를 함수 뒤에 오면 멤버함수는 객체의 상태를 변경못하게 막는다.
	MyClass operator+(const MyClass& other) const {
		MyClass result(value + other.value);
		return result;
	}
	
	// 이항연산자 호출
	void print() const {
		std::cout << "Value: " << value << std::endl;
	}
};

int main(){
	MyClass obj1(5);
	MyClass obj2(10);
	
	// 이항 연산자 호출
	MyClass result = obj1 + obj2;
	
	// 결과 출력
	result.print();
	
	return 0;
}

헤더 파일에서 미리 선언이 된 함수를 .cpp파일에서 오버로딩하여 구현부를 완성해주었다. 이렇게 되면 추후에 CMyString과 TCHAR의 연산이 이루어지면 자동으로 컴파일은 이에 맞는 operator를 찾아서 구현부를 동작시켜준다.

profile
설명이 가능할 때까지 공부하기.

0개의 댓글