Next: Conversão de tipos Up: Fundamentos de C++ Previous: Definição de variáveis Sumário
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.
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 "The weight of dog1 is " dog1.weight begintex2html_wrap_inline$$n";
cout "The weight of dog2 is " dog2.weight begintex2html_wrap_inline$$n";
cout "The weight of chicken is " chicken.weight 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.