Chater 12. 연산자 오버로딩

01. 도입

2장에서 살펴본 망델브로 집합 플로터에서는 복수평명 위의 수를 표현하기 위해 num 트레이트의 Complex 타입을 사용한 예시가 아래와 같음

#[derive(Clone, Copy, Debug)]
struct Complex<T> {
	/// 복소수의 실수 부분
	re: T,
	/// 복소수의 허수 부분
	im: T,
}

보통 복소수의 형태는 a+bi 형식으로 나타낼 수 있으며, 여기서 a는 실수 부분이고 b는 허수 부분이다. T는 제네릭 타입으로, 실수 부분과 허수 부분이 다양한 수치 타입을 가질 수 있도록 한다.

예를 들어, 복소수 3+4i를 표현하기 위해 Complex 구조체를 사용할 수 있다.

let z = Complex { re: 3, im: 4 };

Complex 수는 기본 제공 수치 타입처럼 러스트의 +와 연산자로 더하고 곱할 수 있었다.

1. 연산자 오버로딩(operator overloading)이란?

연산자 오버로딩 : 사용자 정의 타입도 산술 연산자를 비롯한 여러 연산자를 지원 하는데 몇 가지 기본 트레이트를 구현하기만 되는 것을 말함

참고로 C++, C#, 파이썬, 루비의 연산자 오버로딩과 효과가 매우 비슷하다는 것으로 연산자 오버로딩을 위한 트레이트는 언어의 어떤 부분을 지원하는지에 따라 몇 가지 범주로 나뉜다.

이번 장의 목표는 이 장의 목표는 사용자 정의 타입을 언어에 잘 통합할 수 있도록 돕고, 이러한 연산자를 사용하는 타입에 가장 자연스럽게 작용하는 제네릭 함수를 작성하는 방법에 대해 이해를 돕는 것이다.

2. 연산자 오버로딩을 위한 트레이트

Untitled

위의 표에 대한것들을 하나 하나 각자의 파트별로 조사해볼 예정!!