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.