c++ 연산자 오버로딩 예제

멤버여야 하는 연산자 이외에도 연산자는 멤버 또는 비멤버 함수로 오버로드될 수 있습니다. 멤버로 과부하할지 여부는 프로그래머에게 달려 있습니다. 연산자는 일반적으로 멤버로 오버로드됩니다: 모든 연산자 오버로드와 마찬가지로 표준 형식의 사전 증분/사전 감소는 참조를 반환하지만 반환 형식은 사용자 정의입니다. 예를 들어 std:::원자성 값에 의한 이러한 연산자의 오버로드입니다. 연산자! 일반적으로 부울 컨텍스트에서 사용되도록 의도된 사용자 정의 클래스에 의해 오버로드됩니다. 이러한 클래스는 또한 사용자 정의 변환 함수 명시적 연산자 bool(표준 라이브러리 예제에 대한 std::basic_ios 참조) 및 연산자의 예상 동작을 제공합니다! 은 연산자 bool의 반대값을 반환합니다. 작업자 과부하의 목적을 기억하십시오: 클래스를 사용하는 코드의 비용 및 결함 률을 줄입니다. 사용자를 혼동하는 연산자를 만드는 경우(사용자가 멋지기 때문에 코드를 더 빠르게 만들기 때문에 코드를 만들 수 있다는 것을 스스로 증명해야 하기 때문에 실제로 는 중요하지 않습니다.) 처음에는 연산자 오버로드를 사용하는 모든 이유를 위반했습니다. 장소. 연산자 오버로드(일반적으로 임시 다형성이라고 도는)는 +, = 또는 ==와 같은 일부 또는 모든 연산자가 다형성 함수로 처리되고 다른 동작을 가지는 다형성(언어의 OO 특성의 일부)의 특정 사례입니다. 인수의 유형에 따라 다름. 연산자 오버로드는 일반적으로 구문 설탕입니다.

함수 호출을 사용하여 쉽게 에뮬레이트할 수 있습니다. 아니오: 오버로드된 연산자의 하나 이상의 카연드(클래스를 의미하는 대부분의 시간)는 일부 사용자 정의 형식이어야 합니다. std:::sort 와 같은 표준 알고리즘및 std::set과 같은 컨테이너는 기본적으로 사용자 제공 형식에 대해 연산자<를 정의하고 엄격한 약한 순서를 구현할 것으로 예상합니다(따라서 비교 요구 사항을 충족). 구조에 대한 엄격한 약한 순서를 구현하는 관용적인 방법은 std::tie에서 제공하는 사전 비교를 사용하는 것입니다: 참고: 사용자 정의 변환 함수, 사용자 정의 리터럴, 할당 및 할당 할당에 대한 과부하의 경우 해당 기사. 다음은 멤버 함수를 사용하여 로드를 초과하는 연산자의 개념을 보여 줄 예제입니다. 여기에 객체는 속성이 개체를 사용하여 액세스 할 인수로 전달됩니다, 이 연산자 호출 하는 개체는 아래에 설명 된 대로이 연산자사용 하 여 액세스할 수 있습니다-예를 들어, []]] 접근 방식을 구현 하는 가장 쉬운 방법은 물리적 을 사용 하는 것입니다. 행 – 주요 형태로 저장되는 조밀 한 행렬로 행렬의 레이아웃 (또는 열 장입니다; 나는 이제까지 기억할 수 없다).

©2019 DemiJohn

Log in with your credentials

Forgot your details?