Idiomas diferentes definem as palavras "converter" e "converter" de maneira diferente; Não acho que a questão seja significativa a não ser em referência a um idioma específico.
Em C, por exemplo, o termo "conversão" refere-se corretamente apenas a um operador de conversão explícito, consistindo em um nome de tipo entre parênteses que precede a expressão a ser convertida. Uma "conversão" converte um valor de um tipo em um valor de outro tipo; algumas conversões são implementadas reinterpretando os bits que compõem a representação, mas é definida como uma conversão de valor em valor. (Sim, isso é verdade mesmo para conversões de ponteiro; é possível que diferentes tipos de ponteiro tenham representações diferentes.)
Observe que não existe uma "conversão implícita" em C.
Algumas conversões são explícitas, especificadas por um operador de conversão. Outros estão implícitos e são aplicados em certos casos quando uma expressão de um tipo é usada em um contexto que precisa de uma expressão de um tipo diferente. A conversão realizada é exatamente a mesma em ambos os casos.
Por exemplo:
double x = 1.23;
int y = (int)x; /* A cast, or explicit conversion, setting y to 1 */
int z = x; /* An implicit conversion, setting z to 1. */
C ++ é semelhante; tem os mesmos moldes e conversões como C, e adiciona uma anotação funcional equivalente a uma expressão de conversão de estilo C, mais 4 palavras-chave mais específicas: const_cast
, dynamic_cast
, reinterpret_cast
, e static_cast
.