Você está na página 1de 12

Linguagem de

programação C++

Uma abordagem mais profunda –


Classe I

http://www.thyagofernando.host.sk
Objetivos

• Separar a interface da implementação


• Não incluir mais de uma cópia do .h no .cpp
• Acessar membros da classe
• Definir construtores com argumentos default
• Usar destrutores
• Saber quando construtores e destrutores são
chamados
• Atribuir um objeto a outro através do =

http://www.thyagofernando.host.sk 2
Introdução

• A definição da classe contém protótipos para as


funções-membro
• A classe inclui atributos como private
• Os atributos só podem ser acessados por suas
funções-membro
• As diretivas de compilação #ifndef e #define e #endif
evitam a inclusão do(s) arquivo(s) mais de uma vez
num programa

.h http://www.thyagofernando.host.sk 3
Construtores

• O programador pode definir diversos construtores


sobrecarregados para a classe
• Os atributos da classe não podem ser inicializados
onde eles foram declarados
• Recomenda-se que isso seja feito no construtor da
classe
• Construtores são chamados para inicializar cada
atributo

http://www.thyagofernando.host.sk 4
Escopo da classe

• Uma função-membro pode ser definida fora da classe


com o ::
• Uma variável da função-membro com o mesmo nome
de uma variável do escopo da classe a oculta
• Variáveis ocultadas podem ser acessadas pelo seu
nome seguido do nome da classe e o ::
• Variáveis globais podem ser acessadas pelo :

.cpp main http://www.thyagofernando.host.sk 5


Acesso a membros da classe

• O operador . é precedido por um objeto ou por


uma referência do objeto para acessar seus
membros
• O operador -> é precedido por um apontador
para o objeto para acessar seus membros

.h .cpp main http://www.thyagofernando.host.sk 6


Funções de acesso e funções utilitárias

• Funções de acesso podem ler ou mostrar


dados. Outro uso comum é testar a veracidade
ou falsidade de uma condição
– bool estahVazia( void );
• Funções utilitárias não fazem parte da
interface public da classe, ela é uma função-
membro private que dá suporte as operações
da função pública

.h .cpp main http://www.thyagofernando.host.sk 7


Construtores com argumentos default

• Os argumentos default para um construtor


certifica que, mesmo se nenhum valor for
fornecido numa chamada ao construtor, o
construtor ainda inicializará os atributos para
manter o objeto num estado consistente.

.h .cpp main http://www.thyagofernando.host.sk 8


Destrutores
• Um destrutor é chamado implicitamente quando um objeto é
destruído.
• Um destrutor não recebe parâmetros e não retorna valores.
Uma classe pode ter apenas um destrutor e destrutores
sobrecarregados não é permitido
• Se o programador não fornecer um destrutor explicitamente, o
compilador cria um destrutor vazio
• O uso de destrutores é importante quando se usa composição,
herança, alocação de memória dinâmica e arquivos em discos

http://www.thyagofernando.host.sk 9
Quando construtores e destrutores são
chamados?
• Construtores e destrutores são chamados implicitamente pelo
compilador. A ordem na qual as chamadas às funções
ocorrem depende da ordem da execução e do término do
escopo onde o objeto foi instanciado. Geralmente, destrutores
são chamados em ordem inversa das chamadas dos
construtores correspondentes. Mas isso pode ser alterado
• Destrutores não são chamados por objetos estáticos se o
programa termina com a chamada a função exit ou abort

.h .cpp main saida http://www.thyagofernando.host.sk 10


Atribuição de membro por default
• Um objeto pode ser atribuído a outro do mesmo tipo pelo
operador de atribuição =
• Cada membro do objeto é atribuído ao membro do objeto da
esquerda correspondente
• Objetos podem ser passados como argumentos e podem ser
retornados de funções. Tal passagem e retorno é executado
usando passagem por valor
• Por default uma cópia do objeto é passado ou retornado

.h .cpp main http://www.thyagofernando.host.sk 11


Referências

• C++ How to Program – 5th edition - Deitel

http://www.thyagofernando.host.sk 12