C ++ reinterpret_cast

C ++ reinterpret_cast
Um ponteiro é sempre devolvido pelo reinterpret_cast. Reinterpret_cast pode executar a coisa incorreta e tende a fazer a modificação apropriada para o ponteiro se B tiver muito mais do que uma classe abstrata e A não for a primeira classe abstrata.

Retornar tipo de reinterpret_cast

Não há tipo de retorno para isso. O tipo de ponteiro é apenas convertido.

Parâmetros do reinterpret_cast

A variável ponteiro de referência é o único argumento que aceita.

Uso de reinterpret_cast

    • O operador de fundição reinterpret_cast é único e problemático. Recomenda -se utilizá -lo com o tipo de dados apropriado.
    • Qualquer ponteiro se torna um tipo de tipo para algum outro tipo de dados.
    • É utilizado enquanto trabalha com bits.
    • Se utilizarmos o reinterpret_cast, o produto não possui sua portabilidade. Recomenda -se não empregar essa noção, a menos que seja estritamente essencial.
    • É empregado exclusivamente para digitar qualquer ponteiro de volta ao seu tipo real.
    • O valor booleano é transformado em um número binário.

Vamos falar mais sobre o C ++ Interpret_cast.

Exemplo 1:

Neste exemplo, mostraremos como o reinterpret_cast funciona em seu nível mais fundamental.

#incluir
usando namespace std;
int main ()

int* a = new int (90);
char* chr = reinterpret_cast(a);
cout << *a << endl;
cout << *chr << endl;
cout << a << endl;
cout << chr << endl;
retornar 0;



Iniciamos o código integrando o arquivo de cabeçalho . O espaço para nome padrão é usado na próxima etapa. Definimos a função principal (). Dentro da função, construímos um ponteiro. Junto com isso, inicializamos uma variável e fornecemos um valor deste ponteiro.

Em seguida, declaramos um ponteiro do tipo de dados do personagem. Usamos o comando reinterpret_cast. Aqui, passamos o ponteiro do personagem. Além disso, utilizamos a declaração cout primeiro para imprimir o ponteiro variável, bem como o ponteiro do personagem. Em seguida, empregamos a declaração cout para exibir os valores de ambos os ponteiros. No final, aplicamos o comando de retorno 0.

Exemplo 2:

Este código demonstra como utilizar a estrutura como uma ilustração.

#incluir
usando namespace std;
estruturar mystruct
int i;
int j;
char m;
bool n;
;
int main ()

mystruct e;
e.i = 25;
e.j = 40;
e.m = 'u';
e.n = true;
int* ptr = reinterpret_cast(& e);
cout << sizeof (e) << endl;
cout << *ptr << endl;
ptr ++;
cout << *ptr << endl;
ptr ++;
char* chr = reinterpret_cast(ptr);
cout << *chr << endl;
Chr ++;
bool* b = reinterpret_cast(Chr);
cout << *b << endl;
cout << *(reinterpret_cast(Chr));
retornar 0;



A biblioteca e o espaço para nome padrão são usados ​​no início do código. Criamos uma estrutura denominada mystruct. Dentro dessa estrutura, inicializamos duas variáveis ​​chamadas i e j. Em seguida, criamos duas outras variáveis ​​das quais a primeira variável possui um tipo de dados de caracteres e a segunda variável possui um tipo de dados booleano. Na etapa posterior, usamos a função principal (). Dentro desta função, chamamos de variável "e" da estrutura de "mystruct".

Em seguida, atribuímos alguns valores aleatórios à variável associada à estrutura. As duas primeiras variáveis ​​contêm os valores inteiros. A terceira variável contém o personagem. A última variável contém o valor booleano. Durante o elenco, o tipo de dados da variável é o mesmo que da variável real. Agora, convertemos o ponteiro de "e" para o ponteiro da variável com o tipo de dados inteiro. Construímos o ponteiro e definimos seu valor igual ao reinterpret_cast. Então, utilizamos a declaração cout. Aumentamos o valor do ponteiro "PTR" por 1. Agora, imprimimos o valor do próximo ponteiro, por isso empregamos a declaração de cout novamente.

Além disso, o valor deste ponteiro é aumentado por 1. Aplicamos o elenco ao ponteiro do personagem "Chr" pelo uso de reinterpret_cast. Agora, basta mostrar o valor do ponteiro do personagem com a ajuda da declaração Cout. Como *chr já corresponde a um valor booleano, uma transformação de tipo de dados semelhante é empregada para obter o valor. Assim, usamos o tipo de dados *B, que é um bool. Utilizamos o reinterpret_cast para o ponteiro booleano. Imprimos o valor dessa variável booleana aplicando a instrução Cout. O reinterpret_cast é empregado para exibir o valor apontado pelo *chr ch. Para encerrar o código, use a instrução Return 0.

Exemplo 3:

O reinterpretação do ponteiro é demonstrado neste caso.

#incluir
usando namespace std;
classe u
público:
void fun_x ()

cout << " Present in class U\n";

;
classe V
público:
void fun_b ()

cout << " Present in class V\n";

;
int main ()

V* i = new V ();
V* new_x = reinterpret_cast(eu);
new_x-> fun_x ();
retornar 0;



Primeiro de tudo, apresentamos o módulo e o espaço de nome padrão. Então, nós construímos uma classe chamada você. Definimos uma função desta classe publicamente. Utilizamos o comando cout dentro desta função. Então, fazemos uma nova classe chamada V. Depois de chamar a função, tornamos público. Aqui, a declaração cout é usada. Iniciamos a codificação dentro do método principal (). Primeiro, construímos o objeto "eu" da classe V. Transformamos o ponteiro para o objeto e damos a referência da classe V à classe U, por isso utilizamos o reinterpret_cast. Em seguida, recuperamos a função "fun_x" da classe U. Em seguida, aplique o comando retornar 0 para encerrar o programa.

Conclusão

Discutimos o C ++ reinterpret_cast neste artigo. Há um operador de fundição chamado reinterpret_cast em c++. Não importa se as classes estão conectadas ou não, é utilizado para transformar um ponteiro de um tipo de dados em outro ponteiro. Avaliamos três exemplos e, em um deles, podemos ver como usar o reinterpret_cast opera em sua forma mais básica. No segundo exemplo, fazemos uso de uma estrutura e depois usamos o reinterpret_cast para mudar seu ponteiro para outro ponteiro. A última ilustração mostra um ponteiro reinterprete.