fig

Obtendo informação sobre Classes

julho 27, 2014 - C++ / Programação

Várias pessoas já me perguntaram sobre uma funcionalidade equivalente àquela oferecida pela palavra reservada instanceof do Java em C++. É essencial obter informações sobre a classe de um determinado objeto em tempo de execução, quase sempre com relação a algum ancestral do objeto em questão.

Por exemplo, se temos diversos descendentes de uma certa classe Figura, como por exemplo as classes Circulo, Retangulo e Espiral, como podemos saber se um objeto da classe Figura é um círculo, um retângulo ou uma espiral?

A linguagem C++ suporta herança múltipla, o que torna o problema um pouco mais complexo do que para o Java, onde essa característica não está presente.

Em C++ isso pode ser feito de formas diferentes. A maneira mais parecida com o Java consiste em utilizar <type_info.h> e a palavra reservada typeid:

typeid pode ter como parâmetro tanto um objeto como uma classe, e retorna um objeto especial para “identificação de classe” que pode ser comparado através do operador == com outro objeto do mesmo tipo.

A forma mais utilizada em C++ para identificar o tipo de um objeto envolve forçar uma conversão de tipo utilizando-se dynamic_cast<T>. Se a conversão de tipo for possível, existe alguma classe na hierarquia do objeto procurado que é compatível com e então identificamos o objeto como sendo membro dessa classe. Do contrário, uma exceção acontece em tempo de execução, a qual precisa ser tratada pelo seu programa.

› tags: C++ / Java /

Deixe um comentário

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">