Conversões
Objetos de um tipo de determinada classe podem ser convertidos para objetos de outro tipo.Isso é feito, criando um objeto do tipo de classe de destino do tipo de classe de origem e copiar o resultado para o objeto de destino.Esse processo é chamado conversão pelo construtor.Objetos também podem ser convertidos por funções de conversão fornecido pelo usuário.
Quando conversões padrão (descrito em Conversões padrão) não é completamente converter de um tipo de dado para um tipo de classe, o compilador pode selecionar conversões definidas pelo usuário para ajudar a concluir o trabalho.Com conversões de tipo explícito, conversões levar colocar quando:
Uma expressão de inicializador não é do mesmo tipo que o objeto que está sendo inicializado.
O tipo de argumento usado em uma chamada de função não corresponde ao tipo de argumento especificado na declaração da função.
O tipo do objeto que está sendo retornado de uma função não corresponde ao tipo de retorno especificado na declaração da função.
Dois operandos de expressão devem ser do mesmo tipo.
Uma expressão controlando uma instrução de iteração ou seleção requer um tipo diferente daquele fornecido.
Uma conversão definida pelo usuário é aplicada somente se ele for inequívoca; Caso contrário, uma mensagem de erro é gerada.Ambigüidade é verificada no ponto de uso.Portanto, se os recursos que fazem com que a ambigüidade não forem usados, uma classe pode ser designada com ambigüidades potenciais e gera erros.Embora existam muitas situações em que podem surgir ambigüidades, estes são dois dos principais motivos ambigüidades:
Um tipo de classe é derivado de usando herança múltipla, e ele não está claro de qual classe base para selecionar a conversão (consulte ambigüidade).
Existem um operador de conversão de tipo explícito e um construtor para a mesma conversão (consulte Funções de conversão de).
Conversão pelo construtor e funções de conversão pela conversão obedecem às regras de controle de acesso, conforme descrito em O controle de acesso de membro.Controle de acesso é testado somente após a conversão for considerada inequívoca.
Para obter informações adicionais, consulte Construtores de conversão.