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

[edição não verificada][edição não verificada]
Conteúdo apagado Conteúdo adicionado
Linha 10:
* As referências, presentes apenas na linguagem C++, não tem correspondência direta em Objective Caml, embora possam ser simuladas por ponteiros, logo pelas referências de Objective Caml.
* As uniões correspondem aproximadamente aos tipos variantes de Objective Caml, embora não sejam tão práticas para serem manipuladas.
* Enfim, terminaremos com a apresentação dos tipos funcionais, que existem em C e em C++. Embora não sejam tão flexíveis quanto os tipos funcionais de Objective Caml, permitem ainda programação de ordem superior.
 
Vale destacar que em C e em C++, pode-se dar um nome a um tipo, utilizando a seguinte construção, ou alguma variação:
typedef expressaodetipo nome;
Por exemplo, podemos definir um tipo chamado <tt>inteiro</tt> que é idêntico ao tipo básico <tt>int</tt> com a seguinte construção:
typedef int inteiro; // exemplo de definição de um tipo chamado "inteiro", que nada mais é que o tipo int
Então a mais simples expressão de tipo que exista é um nome de um tipo básico, ou de outro tipo que já foi definido dessa forma. Uma vez definido um nome para um tipo, ele pode ser usado para declarar variáveis ou funções da mesma forma que os tipos básicos. Por exemplo:
inteiro soma3 (inteiro a, inteiro b, inteiro c) // exemplo (artificial) onde usamos um nome de tipo definido por nós
{
inteiro resultado = a;
resultado += b;
resultado += c;
return resultado;
}
 
Também pode ser utilizar uma expressão de tipo diretamente na declaração de uma variável. Assim esse código:
struct Spoint { // nesse exemplo, usamos uma expressão de tipo registro, detalhes sobre essa construção seguem mais adiante
double x;
double y;
} point; // point é uma variável cujo tipo é um tipo registro struct Spoint
é equivalente a
typedef struct Spoint {
double x;
double y;
} Tpoint; // definimos Tpoint como o nome de um tipo registro struct Spoint
Tpoint point; // point é uma variável cujo tipo é Tpoint, ou seja o tipo registro struct Spoint
 
===Tipos enumerados [[Imagem:2de8.png]]===