Sobrecarga de operadores
AULA 12 – Conversão de Tipos
← Conversão implícita em C
A linguagem C permite atribuições e operações entre tipos diferentes, fazendo conversões implícitas, ainda que essas conversões sejam desastrosas. A responsabilidade pela lógica das conversões é do programador.
Conversões em C++
←
C++ mantém as conversões implícitas de C para tipos definidos pela linguagem e acrescenta as funções operadoras de conversão, permitindo que o programador defina suas próprias conversões entre tipos definidos por ele, (classe para classe) ou entre um tipo pré-definido da linguagem e um tipo por ele definido (por exemplo classe para float).
As funções de conversão são acionadas quando o compilador espera um objeto de uma classe e recebe outra em uma atribuição, ou em utilizações de cast tendo o tipo da classe como parâmetro, ou ainda em chamada de função.
C++ implementa dois modos de conversão de tipos:
Conversão com função construtora;
Conversão com funções operadoras.
Conversão com função construtora
← Sintaxe:
class Nome_da_classe {
...
public:
Nome_da_classe ( Nome_tipo ); // função construtora
}
Permite a definição de construtores especiais cuja finalidade é a conversão de um tipo da linguagem ou definido pelo programador ( Nome_ Tipo ) no tipo da classe à qual pertence o construtor ( Nome_da_classe ) .
Se Nome_tipo é um tipo definido pelo usuário (outra classe), então deve permitir à classe na qual vai ser convertido, acessar seus meus privados. Portanto a construtora de conversão de Nome_da_classe deve ser friend da classe Nome_tipo.
Se a função construtora da classe Nome_da_classe tiver mais parâmetros, todos deverão ter valores default.
Exemplo:
float const PARALELO = 2.38;
class Real;
class Dolar {
float money;
public:
Dolar (float mon) { money = mon };
Dolar (Real& );
};
class Real {
double dinheiro;
public:
Real (double grana) { dinheiro = grana };
friend Dolar::Dolar (Real& );
};
Dolar::Dolar (Real& valor) { money = (float valor/PARALELO); }
Implemente o exemplo da página 239 do livro Orientação a Objetos em C++
Conversão com funções operadoras
Geralmente, as conversões com funções operadoras ocorrem entre uma classe e outro tipo. Isto exige que a função operadora seja membro da classe a ser convertida.
Sintaxe:
class Nome_da_classe {
...
public:
Nome_da_classe :: operator ( Nome_tipo ); // função construtora
}
Nome_tipo é o tipo de destino da conversão e Nome_da_classe é o tipo da classe a ser convertida.
A função operadora de conversão não pode ter argumentos e seu retorno é seu próprio nome
Exemplo:
float const PARALELO = 2.38;
class Dolar {
float money;
public:
Dolar (float mon) { money = mon };
};
class Real {
double dinheiro;
public:
Real (double grana) { dinheiro = grana };
operator Dolar ( ); // conversão de Real em Dolar
operator unsigned long ( ); // conversão de Real em unsigned long
};
Real::operator Dolar ( ) { return Dolar ( (float) dinheiro/PARALELO ); }
Real::operator unsigned long ( ) { return (unsigned long) dinheiro); }
Implemente o exemplo da página 241 do livro Orientação a Objetos em C++
................
................
In order to avoid copyright disputes, this page is only a partial summary.
To fulfill the demand for quickly locating and searching documents.
It is intelligent file search solution for home and business.
Related searches
- globo de noticias de hoje
- ultimas noticias de estados unidos de america
- noticias de portugal de hoje
- mapa de estados de mexico
- noticias de esportes de hoje
- jornal de angola de hoje
- jornal canal de mocambique de hoje
- agendamento de carteira de trabalho
- jornal de noticias de hoje
- jornal de noticias de angola
- jornal de noticias de portugal
- massa de torta de frango de liquidificador