De Objective Caml para C e C++/Construção de tipos: diferenças entre revisões

m
}}
 
===Tipos uniões[[Imagem:3de8.png]]===
 
Tipos uniões agrupam diversos tipos em um mesmo tipo. Eles possuem portanto um papel muito similar aos tipos variantes de Objective Caml. Infelizmente, a programação por tipos uniões de C e C++ não é tão simples quanto a de tipos variantes.
Opa!?? O que acontece? Bom, a forma como os bits são arranjados para representar <tt>3.0</tt> do tipo <tt>double</tt> não tem nada a ver como a forma como o valor <tt>3</tt> do tipo <tt>long</tt> é representado... O que aparece na tela é o valor que a ''representação binária'' de <tt>3.0</tt> tem quando é interpretado como sendo tipo <tt>long</tt>. Mais precisamente, como o tipo <tt>long</tt> é representado por quatro bytes, e o tipo <tt>double</tt> com oito, o que aparece na tela a interpretação como valor do tipo <tt>long</tt> são os quatro primeiros bytes da representação binária do tipo <tt>double</tt>...
 
Então, como esse tipo de manipulação é legal tanto em C quanto em C++, é um recurso que podemos utilizar quando precisamos utilizar as representações binárias. Mas se precisamos trabalhar de forma mais abstrata, utilizando mecanismos semelhantes ao dos tipos variantes em Objective Caml, como podemos fazer?
 
===Programação de tipos variantes===
187

edições