2017-10-10 2 views
0

제 질문은 어떻게 연산자 [] []을 (를) 오버로드 할 수 있습니까? 그 밖에도 어떤 일이 벌어지고 있습니까?과부하 연산자 [] []

+1

둘 모두 단일 운영자입니다. – Joey

+0

관련 : https://stackoverflow.com/questions/1642028/what-is-the-operator-in-c?rq=1 – Murphy

+0

질문 :이 질문은 [XY 문제]처럼 냄새가납니다. (http://xyproblem.info). 성취하려는 것을 말할 때 더 유용한 답변을 얻을 수 있습니다. – Murphy

답변

2

올바른 용어는 연산자의 오버로드입니다.

일종의 [][]을 구현하려면 연산자 []이 다시 오버로드되는 첫 번째 []에 대한 프록시 개체를 반환해야합니다.

()()의 체인은 비슷한 방법으로 수행 할 수 있습니다. 슬라이드 조작 장르

, ++ 사업자 c를하지 실제로 (내가 --->을 의미하지 않았다 당신을 가정하고 마지막에 등), 그러나 조합 What is the "-->" operator in C++?

+0

고마워, 그 장면 뒤에서 무슨 일이 일어 났는지 알아? for ** n ** 'th [] – Bizzu

+1

프록시 객체는 * degree에서 templatised 된 템플릿이 될 수 있습니다. 그러나 이것은 상당히 엉망이 될 수 있습니다. 변수에'()'를 사용하지 않는 이유는 무엇입니까? 인자리스트가 무엇입니까? – Bathsheba

+1

사용자 정의 타입에 대해 여러 인자를 받아들이도록 operator []를 확장하면 행복한 캠프가됩니다 – StoryTeller

1

운영자 [][]..., ()()...--> 참조 C++ 연산자.

예를 들어 [][][]을 입력하면 []이 왼쪽 값에 적용되고 특정 값이 반환되고 []이 다시 적용된 다음 세 번째 동일한 값이 반환됩니다. 따라서 실제로는 [][][]이 없지만 간단히 []이 3 번 적용됩니다.

int a[2] = {0,1}; 
int b[3] = {2,3,4}; 
int *c[2] = {a,b}; 

c[0][1]; // [0] first extracts 'a' from 'c', then [1] extracts 1 from a (the value in the second index). 

()()()에 대해서도 마찬가지입니다.

--> 또한 여기 것을 제외하고는 동일한 사상을 따르는 그것과 비교한다하지 동일한 연산자의 반복 결합하지만, 좌변을 반환하고 1로 감소 --의 조합 및 >이며 왼손쪽에는 오른쪽이 있습니다.