Se una classe ha un costruttore di argomento singolo, la mia comprensione è che è implicitamente convertibile dal costruttore nel tipo dell'argomento nei contesti appropriati. La definizione di un operatore di conversione rende anche una classe convertibile in un altro tipo. Domandeoperatore di cast sovraccaricato o costruttore di argomenti singoli
- L'operatore di conversione viene mai chiamato implicitamente?
- Se un costruttore di argomento singolo e un operatore di conversione con lo stesso tipo sono definiti per una classe, uno ha la precedenza sull'altro o è ambiguo?
- Se hai deciso di volere che una classe sia convertibile in un determinato tipo, quale approccio è migliore o dovresti fornire entrambi?
Edit:
vedo non ho capito chiaramente la direzionalità e che i due eseguire conversioni in direzioni opposte. Come seguito su
- Se si ha il controllo su due classi che si desidera rendere convertibili l'una dall'altra c'è un modo preferito in termini di queste due operazioni per raggiungere questo obiettivo?
- È possibile contrassegnare l'operatore di conversione come esplicito?
+1: * evitare entrambi * –
Suggerite che std :: string non dovrebbe avere una conversione implicita da const char *? Ciò renderebbe la classe molto più difficile da usare. –
No, non sto dicendo questo. Ma ho visto molte volte persone che definiscono operatori di conversione sulle proprie classi di stringhe, quindi si sorprendono che '+' non è sempre concatenazione, ma aritmetica del puntatore. –