Si una clase tiene un único constructor de argumentos, lo entiendo es que es implícitamente convertible por el constructor al tipo de argumento en contextos apropiados. La definición de un operador de conversión también hace que una clase sea convertible a otro tipo. Preguntasoperador de conversión sobrecargado o constructor de argumento único
- ¿Alguna vez se llama al operador de conversión implícitamente?
- Si se definen un solo constructor de argumento y un operador de conversión con el mismo tipo para una clase, ¿tiene uno uno sobre el otro o es ambiguo?
- Si ha decidido que desea que una clase sea convertible a un tipo determinado, ¿qué enfoque es mejor o debería proporcionar ambos?
Editar:
veo que no entendía claramente la direccionalidad y que los dos realizan conversiones en las direcciones opuestas. Como seguimiento en
- Si tiene control sobre dos clases que desea hacer convertibles entre sí, ¿hay una manera preferida en términos de estas dos operaciones para lograr esto?
- ¿Es posible marcar el operador de conversión como explícito?
+1: * avoid both * –
¿Sugiere que std :: string no tenga una conversión implícita de const char *? Eso haría que la clase fuera mucho más difícil de usar. –
No, no estoy diciendo eso. Pero muchas veces he visto personas que definen operadores de conversión en sus propias clases de cadenas, y luego se sorprenden de que '+' no siempre sea concatenación, sino aritmética del puntero. –