c++ operator 예제

아니오: 오버로드된 연산자의 하나 이상의 카연드(클래스를 의미하는 대부분의 시간)는 일부 사용자 정의 형식이어야 합니다. 대부분은 오버로드될 수 있습니다. 할 수없는 유일한 C 연산자는 . 및 ?: (그리고 기술적으로 연산자입니다 의 sizeof). C++는 몇 가지 자체 연산을 추가하며, 대부분은 다음과 같은 .:과 .*를 제외하고 오버로드될 수 있습니다. 오버로드 연산자 및 정의되지 않은 동작 호출: 클래스에서 표준 연산자의 오버로드를 통해 해당 클래스의 사용자의 직관을 악용할 수 있습니다. 이렇게 하면 사용자가 컴퓨터의 언어가 아닌 문제 도메인의 언어로 프로그래밍할 수 있습니다. 어레이 어레이 솔루션은 분명히 작동하지만 operator() 접근 방식보다 유연하지 않습니다. 특히[]] 접근 방식에서 더 어려운 operator() 접근 방식으로 수행할 수 있는 쉬운 성능 튜닝 트릭이 있으므로[][] 접근 방식은 적어도 경우에 따라 성능 저하로 이어질 가능성이 높습니다. 연산자 오버로드를 사용하면 C/C++ 연산자가 사용자 정의 형식(클래스)에 사용자 정의 의미를 가질 수 있습니다. 오버로드된 연산자는 함수 호출에 대한 구문 설탕입니다: 여러 개의 하위 스크립트가 있는 경우 가장 깨끗한 방법은 연산자()가 아닌 연산자()를 사용합니다.].

그 이유는 operator[]가 항상 정확히 하나의 매개 변수를 사용하지만 operator()는 임의의 수의 매개변수를 취할 수 있기 때문입니다(직사각형 행렬의 경우 두 개의 매개 변수가 필요합니다). 복합 할당 연산자는 왼쪽 익연산을 변경하므로 멤버 함수로 오버로드되어야 합니다. 다른 모든 연산자(기본 할당 제외)와 마찬가지로 복합 할당 연산자는 명시적으로 정의되어야 하며 자동으로 정의되지 않습니다(예: 오버로드 = + +=는 자동으로 오버로드되지 않음). 복합 할당 연산자는 예상대로 작동해야 합니다: @= B는 A = A @ B와 동일해야 합니다. 2차원 수학 벡터 유형에 대한 +=의 예는 다음과 같습니다. 참고: 오버로드된 연산자의 작업의 의미가 기본 형식에 대해 명확하고 실용적이며 적절하게 명명된 함수 호출에 대해 중요한 표기간이성을 제공하는 경우에만 연산자 오버로드를 사용해야 합니다.