Я розумію , більшість перевантаження операторів, за винятком операторів доступу члена ->
, .*
, і ->*
т.д.
Зокрема, що передається цим операторським функціям, а що потрібно повернути?
Як функція оператора (наприклад operator->(...)
) знає, до якого члена відноситься? Чи може це знати? Це навіть потрібно знати?
Нарешті, чи є якісь міркування щодо суперечності, які потрібно враховувати? Наприклад, при перевантаженні чогось подібного operator[]
, як правило, вам знадобиться як версія const, так і non-const. Чи вимагають оператори доступу членів const та non-const версії?
const
і не- const
версії operator->
не потрібні , але надання обох може бути корисним.
->*
і .*
. Насправді вони навіть не згадують про них! Я відчуваю, що вони рідко зустрічаються в FAQ, але я з радістю пов'язую це запитання з FAQ. Будь ласка, не закривайте це як манеру поширених запитань!