Capisco la maggior parte overloading degli operatori, con l'eccezione degli operatori di accesso utente ->
, .*
, ->*
etc.
In particolare, cosa viene passato a queste funzioni dell'operatore e cosa deve essere restituito?
In che modo l'operatore (ad es. operator->(...)
) Sa a quale membro viene fatto riferimento? Può saperlo? Deve nemmeno saperlo?
Infine, ci sono delle considerazioni che devono essere prese in considerazione? Ad esempio, quando sovraccarichi qualcosa del genere operator[]
, generalmente avrai bisogno sia di una versione const che di una non-const. Gli operatori di accesso dei membri richiedono versioni const e non const?
const
e non sono richiesteconst
versioni di , ma fornire entrambi può essere utile. operator->
->*
e .*
. In realtà, non li menziona nemmeno! Sento che sono rari essere in una FAQ, ma collegherei volentieri questa domanda dalle FAQ. Si prega di non chiudere questo come duplicato delle FAQ!