연산자 오버로딩 도입
연산자 오버로딩 도입 (Introduction)
Free Pascal은 연산자 오버로딩을 지원해요. 사용자가 정의한 타입에 대해 연산자의 동작을 정의할 수 있어요.
출처: 문서
본문
Free Pascal은 연산자 오버로딩(operator overloading) 을 지원해요. 즉, 사용자가 정의한 타입에 대해 일부 연산자의 동작을 정의할 수 있고, 그래서 그 타입들을 수학적 표현식 안에서 사용할 수 있게 해줘요.
또한 연산자 오버로딩은 수학적 의미의 연산자가 아닌, 특별한 동작에도 사용될 수 있어요. 예를 들어 Inc와 Dec 프로시저(프로시저로만 사용 가능)와, 암시적·명시적 대입(:= 및 타입 캐스팅)이 그렇죠. 열거자 연산자(enumerator operator) — 타입에 대한 열거 가능한 계열을 정의하는 연산자 — 도 이 부류에 속해요.
연산자의 동작을 정의하는 것은 함수나 프로시저 정의와 아주 비슷해요. 다만 가능한 정의에 몇 가지 제한이 있어요. 이는 앞으로 차례로 살펴볼게요.
연산자 오버로딩은 본질적으로 강력한 표기 도구예요. 하지만 그 이상은 아니라는 점을 기억해야 해요. 같은 결과를 일반 함수 호출로도 얻을 수 있기 때문이죠. 연산자 오버로딩을 사용할 때는 일부 암시적 규칙이 예상 밖의 결과를 만들 수 있다는 점을 명심해야 해요. 관련된 부분은 따로 짚어줄게요.
연산자 오버로딩을 선언하는 방법은 두 가지가 있어요.
- 첫 번째 방식은 Free Pascal에 원래 구현된 방식으로, 가장 강력하며 이 장에서 다뤄요.
- 두 번째 방식은 확장(고급) 레코드에서만 구현할 수 있는 방식으로, extended records 장에서 다뤄요.