•
Interação
entre classes
Classes podem interagir
entre si, objetos podem ter membros de outras classes.
Essa notação pode ser usada também com arquivos headers.
Para isso, no header da classe que irá usar uma classe já criada
deve ser incluida a classe primaria.
Confira um exemplo de interação:
#include <iostream>
class jogador
{
public:
jogador( int );
int imprimir();
private:
int pontos;
};
jogador::jogador(
int i )
{
pontos = i;
}
int jogador::imprimir()
{
return pontos;
}
class jogo
{
public:
jogo ( int, int ); // construtor!
void imprimir();
private:
int njogo;
jogador jogo_atual;
// Interação da classe jogador com a classe
jogo, um tipo jogador como jogo_atual em jogo.
};
//
a variavel pontos é ligada com o construtor de jogo_atual ( jogador )
// essa variavel vai receber um valor e será passado para a outra classe
jogo::jogo( int i, int pontos ) : jogo_atual(
pontos ) //
construtor com intereção
{
njogo = i;
}
void jogo::imprimir()
{
std::cout << "Numero do jogo: " << njogo
<< std::endl;
std::cout << "Pontuação do jogo "<<
njogo << ": " << jogo_atual.imprimir();
}
int main()
{
jogo data1( 1, 100 );
jogo data2( 2, 300 );
data1.imprimir();
data2.imprimir();
std::cin;
return 0;
}
Observe a linha
jogo::jogo( int i, int pontos ) : jogo_atual(
pontos ) //
construtor com intereção
Com essa notação, construtores que recebem variáveis podem
ser iniciados
O objeto jogo neste caso é conhecido como objeto hospedeiro.
Vários tipos
poderiam ser iniciados, bastando separa-los por virgula
jogo::jogo( int i, int pontos ) : jogo_atual( pontos
) , jogos_anterior( pontos )
O :
no cabeçalho da função separa os inicializadores da lista
de parâmetros.
Inicialize explicitamente
objetos membro através de inicializadores de membros. Isto elimina o
overhead da dupla inicialização de objetos membros.
Execute o programa
e analize o resultado. Não se assuste, vamos ver mais a fundo essas operações.
Perguntas??? Email
|