Dynamic_Cast C++

Dynamic Cast C



A conversão dinâmica na linguagem de programação C++ será discutida neste artigo. Para começar, devemos entender a noção de fundição e muitos tipos de fundição. O processo de alterar o tipo de dados de uma variável é conhecido como casting. Casting é dividido em duas categorias na linguagem de programação C++: casting implícito e casting explícito.

Conversão de tipo de dados em C++:

A conversão de tipos é o procedimento de alterar o tipo de dados para algum outro tipo de dados. Existem dois tipos de conversão ou conversão de tipo na linguagem de programação C++: conversão implícita e explícita. A conversão de tipo automatizada é outro nome para typecasting implícito. É executado pelo compilador durante a compilação em tempo real e não requer nenhuma entrada ou ação do usuário. Quando há dois tipos de dados em uma expressão, essa forma de conversão ocorre. Por exemplo:

  Interface gráfica do usuário, texto, aplicativo Descrição gerada automaticamente







No código fornecido, podemos ver que uma variável inteira e uma variável caractere são inseridas na expressão da última linha, e o valor da variável inteira “i” é alterado. O número ASCII equivalente a “a” será convertido em um valor de caractere e adicionado ao valor inteiro da variável “i” nesta instrução. Se o valor da variável “i” for impresso, o resultado será um total de ambos os valores. O compilador transforma automaticamente o tipo de dados da variável de caractere em um tipo de dados inteiro, convertendo-o no valor padrão ASCII do alfabeto à direita, que é um ótimo exemplo de conversão de tipo implícita ou automatizada no tempo de execução.



Agora, quando se trata de conversão de tipo explícito ou conversão de tipo, não é um processo automatizado; o usuário deve converter manualmente um tipo de dado de uma variável em outro tipo de variável no código. Os tipos de dados geralmente são organizados em uma hierarquia com base em seu espaço de memória e na quantidade de informações que podem conter. Portanto, quando um tipo de dados de ordem inferior é usado para armazenar qualquer informação, mas precisa ser transformado em um tipo de dados de ordem superior, para que a perda de informações possa ser minimizada e mais e mais informações possam ser armazenadas, a conversão de tipo explícito ou conversão de tipo é comumente feito. Por exemplo, como uma variável de tipo inteiro não pode armazenar valores após o ponto decimal, podemos perder algumas informações se continuarmos a usar variáveis ​​inteiras. Para evitar essa perda, convertemos a variável integer em float, salvando os valores após as casas decimais e evitando a perda de informações. A conversão de tipo explícita na linguagem de programação C++ pode ser realizada de duas maneiras: por meio de atribuição ou utilizando o operador cast. A conversão de atribuição é feita em uma expressão de código e a sintaxe dessa expressão é fornecida abaixo.



# “expressão (tipo de dado)”

No código acima, devemos colocar um tipo de dado válido dentro do colchete, e após o colchete, devemos escrever a variável ou expressão que desejamos modificar no tipo de dado escrito dentro do colchete.





Agora veremos o tipo de conversão feita pelos operadores de conversão na linguagem de programação C++. Os operadores de conversão também são chamados de operadores unários que forçam uma variável a alterar seu tipo de dados de um existente para outro. Existem quatro tipos de operadores de conversão de conversão: conversão estática, conversão dinâmica, conversão const e conversão reinterpretada.

Conversão dinâmica em C++:

A conversão dinâmica na linguagem de programação C++ é baseada em um conceito chamado RTTI (Run Time Type Identification). RTTI é uma função presente em diversas linguagens de programação como C/C++, Ada e Object Pascal. Run-Time Type Identification or Information é uma função que identifica e extrai as informações referentes aos detalhes do tipo de dados de um objeto em tempo de execução de um programa. Essa função fornece um caminho seguro para métodos de conversão de tipo, como a função “typeid” ou conversão de tipo dinâmico. Ele detecta as informações do tipo de dados no tempo de execução e auxilia na conversão do tipo de dados quando os operadores estão em jogo.



O casting dinâmico é utilizado principalmente em C++ para downcast seguro em tempo de execução. Para trabalhar com o elenco dinâmico, a classe base deve ter 1 função virtual. O lançamento dinâmico funciona apenas com classes de base polimórficas porque utiliza essas informações para determinar o lançamento seguro. Um operador de conversão dinâmica faz conversão dinâmica. Agora que já conhecemos os conceitos relacionados ao casting dinâmico, podemos partir para a parte de implementação. Vejamos primeiro a sintaxe para usar a conversão dinâmica na linguagem de programação C++, que está escrita abaixo:

# “dynamic_cast (Expressão)”

Na expressão acima, a primeira parte descreve o nome do operador; nos parênteses angulares, escrevemos o nome do tipo de dados em que precisamos converter nossa expressão e, nos colchetes, escrevemos o nome da variável ou objeto que queremos converter.

Agora que sabemos como usar o operador dynamic cast e preencher os parâmetros para converter tipos de dados de variáveis, podemos usá-lo para converter tipos de dados de variáveis.

Usando o método Dynamic cast no Ubuntu 20.04:

Para implementar este conceito, devemos usar várias classes para trabalhar para converter objetos da classe por herança. Então, para fazer isso primeiro, devemos primeiro saber que o arquivo do programa C++ no ambiente Ubuntu é armazenado com a extensão “.cpp”, então para criar esse arquivo em nossa área de trabalho, abra um terminal e digite “cd Desktop” no linha de comando, pressione Enter e digite “touch filename .cpp” para criar um arquivo com a extensão “.cpp”. Agora escreveremos um código nesse arquivo para criar uma classe base e 2 classes derivadas e, no código do driver, usaremos o operador dynamic cast.

  Interface gráfica do usuário, descrição de texto gerada automaticamente

Saia do arquivo depois de clicar no botão salvar. Retorne ao terminal e construa o arquivo usando o comando “g++” com o nome do arquivo e a extensão “.cpp”. Um arquivo com a extensão “.out” será criado usando este comando. Agora você pode executar esse arquivo digitando “./” seguido de sua extensão “.out”.
  Texto Descrição gerado automaticamente

Neste programa, o ponteiro da classe base armazena objetos derivados da classe 1 (d1). A classe base de conversão dinâmica, o ponteiro reteve o objeto Derived1 e o alocou para a classe derivada 1, que forneceu conversão dinâmica válida.

Conclusão :

Este artigo nos ensinou o método de conversão de tipo usado na linguagem de programação C++. O tipo de conversão também foi discutido em detalhes e focamos na necessidade de usar tais métodos na programação C++. Discutimos a função de assistência que ajuda na conversão do tipo de dados da variável, buscando informações e verificando a conversão correta chamada RTTI. Também implementamos o conceito de Dynamic cast usando o operador dynamic cast em uma expressão na linguagem de programação C++ no ambiente Ubuntu 20.04.