W przypadku przeciążenia - jak operator-(), należy go użyć po lewej stronie obiektu, jednak przeciążenie() takie jak operator()() jest używane z prawej strony obiektu. Skąd wiemy, który operator ma być używany po lewej, a który z prawej?Przeciążanie operatora w C++
Odpowiedz
Spójrz na operator precedence chart. Dzięki temu dowiesz się, w którym kierunku pracuje operator (wiąże). Należy zauważyć, że niektórzy operatorzy mają wiele formularzy o różnych znaczeniach, takich jak binarne i unarne -
. W takich przypadkach można mieć wiele przeciążeń, np .:
T operator-()
i:
T operator-(const T &o)
Kompilator wybiera właściwy na podstawie składniowej interpretacji operatora.
Zobacz także przydatny set of guidelines.
Czy operator-() naprawdę nic nie zwraca - czy nie powinien zwracać wartości odpowiedniego typu, która jest albo negacją wartości, albo różnicą między wartościami? –
Dzięki za złapanie tego, Jonathan. Naprawiono teraz. –
Większość jednoargumentowych operatorów może być umieszczona tylko po określonej stronie ich operandu. W przypadku dwóch specjalnych przypadków: ++
i --
, zobacz this FAQ.
- 1. Przeciążanie operatora + w C++
- 2. Przeciążanie statycznego operatora C++
- 3. Przeciążanie operatora C++
- 4. Przeciążanie operatora -> * w C++
- 5. Przeciążanie operatora w .NET
- 6. Przeciążanie operatora w C++ i dereferencji
- 7. Przeciążanie i ważność operatora
- 8. Przeciążanie operatora dla manipulatorów
- 9. Przeciążanie operatora C++, zdefiniuj negatyw obiektu.
- 10. Przeciążanie ** w C++
- 11. C++: Przeciążanie operatora [] w celu odczytu i zapisu
- 12. Przeciążanie operatora <i operatora> w tej samej klasie
- 13. Przeciążanie operatora C# z listą <T>
- 14. Przeciążanie operatora C++: brak znanej konwersji z obiektu na odniesienie?
- 15. C++ przeciążanie operatorów konwersji
- 16. przeciążanie operatora << dla tablic
- 17. Przeciążanie właściwości w C#
- 18. Przeciążanie operatora nawiasów kwadratowych do wartości akceptowanej
- 19. Przeciążanie operatora dla wszystkich struktur z cechą w Rust
- 20. Przeciążanie funkcji szablonu w C++
- 21. Operator [] Przeciążanie w wielowymiarowych tablicach C++
- 22. Przeciążanie operatora równości w szybkich podsumowaniach z powiązanymi wartościami
- 23. C++ Przeciążanie operatora wyodrębniania - Błąd nie może uzyskać dostępu do elementu prywatnego zadeklarowanego w klasie
- 24. C# mvc 3, przeciążanie akcji?
- 25. Weird operatora przeciążanie, "operator T &() const noexcept {return * _ptr;}"
- 26. C# w operatora przeciążenia
- 27. przeciążanie operatora przyjaciela << dla szablonu klasy
- 28. Przestrzenie nazw i operator Przeciążanie w C++
- 29. Dlaczego przeciążanie nie jest możliwe w C?
- 30. Przeciążanie rozdzielczości
To prosta odpowiedź, ale z perspektywy kogoś nowego w programowaniu mogę sobie wyobrazić, że może to być źródłem wielu bólów głowy. +1 –