Ho trovato questo articolo del blog: Gli operatori di conversione implicita sono cattivi . L'articolo scoraggia l'uso della conversione implicita con i tipi di riferimento. L'articolo descrive i problemi causati dalle conversioni implicite dei tipi di riferimento, che si riducono al seguente
[...] main question of this post: why are implicit conversion operators bad on reference types? [...] By adding an implicit conversion operator to a reference type, you have now introduced value semantics to assignments – but only from one type to another.
[emphasis original]
La mia domanda, tuttavia, riguarda i tipi di valore. All'inizio, l'articolo ha questa affermazione:
Implicit conversion operators are incredibly important to the language, but only for value types.
[emphasis original]
L'articolo non entra nei dettagli su come utilizzare la conversione implicita con i tipi di valore. Questo è quello che mi sto chiedendo. Ecco il mio pensiero attuale:
- L'operatore di conversione è di tipo valore e restituisce un tipo valore . Implicito - ok .
- L'operatore di conversione è di tipo di riferimento e restituisce un tipo valore . Implicito - ok .
- L'operatore di conversione è di tipo valore e restituisce un tipo di riferimento . (Sarebbe un po 'bizzarro, ma sarebbe sbagliato?) Implicito - non va bene .
- L'operatore di conversione è di tipo di riferimento e restituisce un tipo di riferimento . Implicito - non corretto .
In una forma più compatta:
- Se restituisce un tipo di valore, un operatore di conversione implicita è a posto sia per tipo di valore che per tipo di riferimento.
- Se restituisce un tipo di riferimento, la conversione implicita non è accettabile.
È corretto? È completo?
p.s. Per la maggior parte, lavoro principalmente con C e C ++, dove ho un buon controllo su cose come const, puntatori, riferimenti. Ovviamente, questo si correrebbe il rischio di contrarre cattivi bug relativi ai puntatori.