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.
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 –