我的問題是我如何重載運算符[] []? 另外當我打電話給操作員的延伸時,幕後會發生什麼?如何重載運算符[] []
回答
正確的術語是運營商超載。
要實現某種[][]
,需要返回代理對象的第一個[]
,其中運算符[]
再次被重載。
鏈條()()
可以以類似的方式完成。
對於滑動操作件流派,看What is the "-->" operator in C++?
謝謝,你知道幕後發生了什麼嗎?爲了能夠擴展它** n **'th [] – Bizzu
那麼,代理對象可能是一個模板上的*度模板。「這可能會變得相當混亂,但爲什麼不使用'()'與變量參數列表? – Bathsheba
如果他們曾經擴展'operator []'接受用戶定義類型的多個參數,我會成爲一個快樂的露營者 – StoryTeller
運營商[][]...
,()()...
和-->
(到最後,我假設你並不意味着--->
)實際上不是C++運算符,但組合的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吧,>
,這會比較左手邊與右手邊。
- 1. 如何重載運算符=
- 2. 如何重載==運算符?
- 3. 運算符重載 - 重載*
- 4. 重載運算符
- 5. 運算符重載
- 6. 重載運算符*
- 7. *運算符重載
- 8. 重載運算符[]
- 9. 重載運算符 '+ ='
- 10. 重載+運算符
- 11. 重載運算符=
- 12. 運算符重載+ =
- 13. 運算符重載
- 14. 重載運算符%
- 15. 重載運算符+
- 16. 重載運算符*
- 17. 重載++運算符
- 18. 運算符重載
- 19. 運算符重載(=)
- 20. 重載=運算符
- 21. 重載+ =運算符
- 22. 運算符重載?
- 23. C++:運算符重載,運算符+
- 24. 運算符重載運算符()'
- 25. 運算符重載如何爲賦值運算符工作?
- 26. C++運算符在已重載的運算符中重載
- 27. 運算符重載C++ - 重載輸出「<<」運算符
- 28. 我該如何重載[]運算符?
- 29. 如何重載條件運算符?
- 30. 如何重載<<運算符?
這些都不是單一的運營商。 – Joey
相關:https://stackoverflow.com/questions/1642028/what-is-the-operator-in-c?rq=1 – Murphy
順便說一句,這個問題聞起來像一個[XY問題](http://xyproblem.info )。當你告訴你想要達到的目標時,你可能會得到更多有用的答案。 – Murphy