c# 연산자 오버로딩 예제

오버로드된 이진 연산자는 두 개의 인수를 사용해야 합니다. 그 중 적어도 하나는 작업이 정의되는 형식 클래스 또는 구조체여야 합니다. 그러나 오버로드된 이진 연산자는 형식 void를 제외한 모든 값을 반환할 수 있습니다. 오버로드된 이진 연산자의 일반적인 형태는 다음과 같습니다. 오버로드된 연산자는 정적으로 선언되더라도 파생된 클래스에 상속됩니다. 연산자 선언은 항상 연산자가 선언된 클래스 또는 구조체가 필요하므로 연산자의 서명에 참여해야 하므로 파생 클래스에서 선언된 연산자가 기본 클래스에서 선언된 연산을 숨길 수 있습니다. 따라서 새 수정자는 필요하지 않으며 연산자 선언에서는 허용되지 않습니다. 2) ++ 접두사 증분 연산자로 이전 및 사후 증분 연산자 함수를 정의하여 연산자가 오버로드될 수 있습니다. 함수는 연산자 키워드를 사용하여 선언됩니다. 연산자는 컴파일러의 함수로 간주할 수 있습니다. 개발자는 유사한 시그니처로 함수를 오버로드할 수 있습니다. 연산자에 대한 추가 작업을 지정하는 함수를 연산자 함수라고 합니다. 연산자 오버로드를 사용하면 연산자 사용 시 기본 제공 형식처럼 실행되는 형식을 구현할 수 있습니다.

형식에 대해 자연스럽고 이해할 수 있는 방식으로 연산자(운영자)를 사용해야 합니다. 연산자를 구현하기 위한 구문은 정적 메서드와 비슷하지만 식별자 대신 연산자 키워드와 연산자 기호를 포함합니다. 또한 작업자 사용에 대한 대칭 유지와 같은 규칙이 있어 견고한 유형의 구성을 장려합니다. 조건부 논리 연산자는 직접 오버로드할 수 없습니다. unary 연산자에 과부하를 두려면 포함 형식의 인수 하나만 취하는 함수가 필요합니다. 언리버드 연산자의 오버로드의 경우 중요한 점은 새 개체를 만들지 말고 전달되는 개체의 값을 변경하고 반환해야 한다는 것입니다. 이제 Rational 형식에 대한 unary ++를 구현해 보겠습니다. C#과 같은 개체 지향 프로그래밍 언어에서 연산자 오버로드는 사용자 지정 형식에 대한 작업을 구현하는 훨씬 더 자연스러운 방법을 제공합니다.

복합 번호에 대해 만들어진 클래스가 있고 이 형식에 대한 모든 산술 연산을 수행하려고 한다고 가정합니다. 이 작업을 수행하는 한 가지 방법은 클래스 내부에 추가, 빼기 및 기능이 있는 등의 함수를 사용하는 것입니다. 또 다른 방법은 실제로 이 형식에 대해 작업할 오버로드된 버전의 연산자가 있는 것입니다. 잘못된 구현의 예를 들어, 차고에 차를 주차 할 수 있도록 구현이 필요한 자동차 클래스를 고려하십시오. 바이너리 연산자는 두 개의 Operands와 함께 작동합니다 : 다음 구현이 현명하다고 생각하는 것은 실수일 것입니다. 이진 연산자의 예로는 산술 연산자(+, -, *, /, %), 산술 할당 연산자(+==, -+, *=,=, *=, /+, %=) 및 관계형 연산자 등이 있습니다.

Comments are closed.