Compartilhar via


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.

Consulte também

Referência

Funções de membro especial (C++)