Exercícios Resolvidos de Sobrecarga de operadores

Ver Teoria

Enunciado

Sobrecarregue os operadores de inserção ( ≪ ) e de extração ( ≫ ) para realizar c o u t e c i n com tipo P O N T O abaixo.

Passo 1

Vamos lá pessoal. A questão pede pra gente sobrecarregar os operadores e .

Então, pra começar, vamos escrever a classe que a questão deu pra gente:

Olha que legal, a classe já possui um protótipo chamado I m p r i m e   , então podemos desenvolver esse método e depois a gente usa na hora de sobrecarregar o operador .

Passo 2

Vamos começar desenvolvendo o método I m p r i m e (   ) .

Este método é uma função-membro da nossa classe, então vamos usar o P O N T O ∷ antes do nome do método.

Essa função apenas vai imprimir os valores contidos nos componentes x e y da função.

Passo 3

Show, agora vamos pra parte principal da questão, a sobrecarga do operador

Lembre-se que o c o u t é um objeto da classe o s t r e a m , e teremos que levar isso em consideração na hora de sobrecarregar o nosso operador.

A forma padrão para sobrecarregar o operador para uma classe qualquer é a seguinte

o s t r e a m &   o p e r a t o r ≪ ( o s t r e a m   & S a i d a ,   P O N T O   p )

Já o corpo da sobrecarga é composto por uma sucessão de usos do c o u t . Porém, nós já fizemos o método I m p r i m e (   ) , então podemos só invocar este método

Um detalhe é que o parâmetro S a i d a pode ter qualquer nome, o importante é que seja retornado no final da sobrecarga.

Passo 4

O próximo passo é sobrecarregar o operador , mas não esqueça que o c i n é um objeto da classe i s t r e a m .

Então, para sobrecarregar o operador para a classe P O N T O devemos fazer assim:

i s t r e a m &   o p e r a t o r ≪ ( i s t r e a m   & E n t r a d a ,   P O N T O   & p )

Importante: não esqueça de passar o objeto p por referência usando o & . Passar por referência é necessário para poder alterar o objeto e inserir o valor no objeto.

No corpo da sobrecarga nós utilizamos o objeto c i n para inserir os valores digitados nos atributos adequados da classe.

O nome do parâmetro E n t r a d a também pode ser modificado, o importante é que esse parâmetro seja retornado no fim da sobrecarga.

Passo 5

A classe está construída e as sobrecargas estão feitas. Agora vamos testar!

Dentro da função m a i n (   ) vamos instanciar um objeto p n t da classe P O N T O

Como os operadores estão sobrecarregados, podemos pedir pro usuário inserir dois valores, e usar o c i n diretamente para armazenar os valores no objeto p n t , como fazemos na linha 32.

E como os operadores estão sobrecarregados também podemos usar o c o u t para imprimir diretamente o objeto p n t , como na linha 33.

O resultado é:

Resposta