next up previous contents
Next: Conversão de tipos Up: Fundamentos de C++ Previous: Definição de variáveis   Sumário


Tipos Compostos

Tipos compostos em C ++ são enumeração, estrutura, união e classes.

O uso de enumeração e estrutura é similar ao uso em linguagem C, exceto por uma pequena diferença: não é necessário repetir a palavra chave (enum e struct, respectivamente) para declarar uma variável deste tipo composto. Por exemplo, se um tipo de enumeração foi previamente declarado como:

    enum game_result {win,lose,tie};
então uma variável deste tipo pode ser declarada simplesmente como
    game_result outcome;
ou seja, outcome é uma variável que pode apenas assumir os valores win, lose ou tie.

Uniões em C ++ apresentam ainda outra característica não presente em C: uma união pode ser livre, isto é. não receber um nome. Esta é uma caracterítica prática quando embutindo uniões dentro de estruturas: quando a união tem obrigatoriamente um nome, como exigido em ANSI-C, isto acrescenta um nível extra de indireção. Em C ++, este nível extra não é necessário.

A definição de classes traz o maior potencial de C ++, e este assunto será abordado em mais detalhes adiante. Neste momento, entretanto, é interessante notar que classes podem ser definidas e acessadas praticamente da mesma maneira que estruturas. O exemplo abaixo ilustra estas similaridades através da definição de uma classe muito simples.

indentation

#include $<$iostream.h$>$

class animal {
public:
int weight;
int feet;
};

main()
{
animal dog1, dog2, chicken;
animal cat1;
class animal cat2;

dog1.weight = 15;
dog2.weight = 37;
chicken.weight = 3;

dog1.feet = 4;
dog2.feet = 4;
chicken.feet = 2;

cout $\ll$ "The weight of dog1 is " $\ll$ dog1.weight $\ll$ begintex2html_wrap_inline$$n";
cout $\ll$ "The weight of dog2 is " $\ll$ dog2.weight $\ll$ begintex2html_wrap_inline$$n";
cout $\ll$ "The weight of chicken is " $\ll$ chicken.weight $\ll$ begintex2html_wrap_inline$$n";
}
O resultado da execução deste programa deve ser
     The weight of dog1 is 15
     The weight of dog2 is 37
     The weight of chicken is 3

Caso animal tivesse sido declarado como uma estrutura, então dog1, dog2, chicken, cat1 e cat2 seriam variáveis de um tipo de estrutura. Como animal é uma classe, então estas variáveis são chamadas de objetos. Embora a diferença possa parecer mínima neste exemplo, ficará claro ao longo deste texto que outras diferenças, muito mais fundamentais, existem.

Observe também o uso da palavra chave public na definição da classe. Ela é necessária porque todas as variáveis em uma classe são, por default, privadas; isto é, elas não poderiam ser acessadas de forma direta como foi feito neste exemplo.



Subsections
next up previous contents
Next: Conversão de tipos Up: Fundamentos de C++ Previous: Definição de variáveis   Sumário
Ivan Luiz Marques Ricarte 2001-06-01