O que é typeid em C++

O Que E Typeid Em C



C++ é uma poderosa linguagem de programação que oferece uma ampla gama de aplicações aos seus usuários. Um aspecto importante da linguagem de programação C++ é sua capacidade de oferecer suporte à identificação de tipo de tempo de execução. O typeid está entre as identificações de tipo de tempo de execução amplamente usadas em programas C++.

Se você não sabe o que typeid estiver em C++, siga as orientações deste artigo.







Operador typeid em C++

O typeid é um operador embutido na linguagem de programação C++ que permite aos usuários determinar o tipo de dados de uma variável em tempo de execução. O valor retornado por typeid é do tipo “typeinfo “, que fornece vários detalhes sobre o tipo do objeto. É importante nos casos em que um programa precisa executar várias operações com base no tipo de dados que está sendo usado.



Sintaxe do typeid



A sintaxe de typeid operador em C++ é o seguinte:





typeid ( tipo )

Ou:



typeid ( exp )

O typeid operador em C++ aceita qualquer um desses dois parâmetros.

Tipo : Quando precisamos saber o tipo de tempo de execução de uma variável ou objeto, fornecemos o argumento de tipo dentro do typeid operador. Somente o argumento de tipo é necessário neste caso, e as informações de tipo de tempo de execução serão coletadas sem nenhuma avaliação ou pré-computação adicional.

Expressão : Quando precisamos de detalhes sobre o tipo de tempo de execução de uma expressão, o parâmetro de expressão é fornecido dentro do typeid operador. As informações sobre o tipo de tempo de execução são obtidas após a avaliação da expressão neste parâmetro.

Quando usado com um typeid , ele fornece informações sobre o tipo que corresponde ao identificador. Quando usado com uma expressão, fornece informações sobre o tipo dinâmico do objeto.

Usos do operador typeid

O typeid O operador pode ser usado dessas maneiras.

1: Quando Operando Atua como Variável do Objeto

O typeid operador pode ser usado em operandos quando eles atuam como uma variável do objeto.

#include
#include
usando namespace std;

int principal ( ) {
int eu;
char ch;
fl flutuante;
db duplo;

const type_info & type_i = typeid ( eu ) ;
const type_info & type_ch = typeid ( CH ) ;
const type_info & type_fl = typeid ( em ) ;
const type_info & type_db = typeid ( banco de dados ) ;

cout << 'O tipo de int i é: ' << type_i.name ( ) ;
cout << ' \n O tipo de caractere ch é: ' << type_ch.name ( ) ;
cout << ' \n O tipo de float fl é: ' << type_fl.name ( ) ;
cout << ' \n O tipo de double db é: ' << type_db.name ( ) << ' \n ' ;

retornar 0 ;
}

No código acima, estamos declarando quatro variáveis ​​diferentes, cada uma com um tipo de dados separado. Estamos então usando o typeid operador nessas variáveis ​​e imprimir seus tipos de dados usando instruções cout.

Saída

2: Quando o Operando é uma Expressão

O typeid operador também pode ser usado onde o operando é tratado como uma expressão.

#include
#include
usando namespace std;

int principal ( ) {
int eu = 7 ;
char ch = 'a' ;
flutuante fl = 42.4 ;
db duplo = 4.279 ;

const type_info & type_a = typeid ( i+ch ) ;
const type_info & type_b = typeid ( eu * em ) ;
const type_info & type_c = typeid ( banco de dados * em ) ;
const type_info & type_d = typeid ( i+db ) ;

cout << 'expressão i+ch: ' << type_a.name ( ) ;
cout << ' \n expressão i*fl : ' << type_b.name ( ) ;
cout << ' \n expressão db*fl : ' << type_c.name ( ) ;
cout << ' \n expressão i+db : ' << type_d.name ( ) ;
retornar 0 ;
}

No código acima, inicializamos quatro variáveis ​​de diferentes tipos de dados. Em seguida, avaliamos algumas expressões e calculamos seu tipo usando o C++ typeid () operador.

Saída

Vantagens e Desvantagens do typeid em C++

O typeid é útil ao escrever código que funciona com objetos que não são conhecidos até o tempo de execução. Por exemplo, suponha que uma função receba um ponteiro void como parâmetro. ele pode usar typeid para determinar se o ponteiro é um int ou um double, o que pode afetar significativamente como a função deve operar.

Além do nome do tipo, o “ typeinfo ” também fornece vários outros detalhes sobre o tipo. Esses incluem:

  • Se o tipo é um tipo fundamental, um tipo de ponteiro ou um tipo definido pelo usuário.
  • Se o tipo é 'const' ou 'volátil'.
  • Se o tipo é um tipo de classe e, em caso afirmativo, se é polimórfico.
  • Se o tipo é um tipo de matriz e, em caso afirmativo, quais são as dimensões.
  • Se o tipo é um tipo de referência.

O typeid também é útil ao lidar com modelos e funções que recebem um número variável de argumentos. Ao usar o “ typeid ”, você pode executar ações específicas do tipo em tempo de execução, como escolher o modelo ou a função correta a ser usada.

Uma possível desvantagem de typeid é que é um pouco lento. Geralmente é mais lento do que outros tipos de verificação de tipo, como parâmetros de modelo ou verificações de tipo em tempo de compilação, pois examina o tipo de um objeto durante o tempo de execução.

Conclusão

O ' typeid ” em C++ fornece informações valiosas sobre o tipo de dados de uma variável ou objeto. Ele permite que os programadores executem ações específicas do tipo em tempo de execução e pode ser usado quando o operando atua como uma variável ou quando o operando é uma expressão.