Exercícios Resolvidos de Sobrecarga de operadores

Ver Teoria

Enunciado

Crie uma classe para os empregados de uma empresa. Eles devem ter os atributos privados n o m e e s a l a r i o , que devem ser inicializados no momento que o objeto é instanciado.

Sobrecarregue os operadores > e < para comparar o salário entre dois funcionários.

Passo 1

Vamos lá, galera.

A questão quer que a gente crie uma classe que represente os funcionários. Para inicializar o objeto no momento que é instanciado, vamos precisar criar um construtor.

Mas o ponto principal da questão é que ela pede que a gente sobrecarregue os operadores binários > e < para comparar o atributo salário.

Mas vamos começar com o cabeçalho: vamos inserir a classe < s t r i n g > para facilitar nossa vida.

Passo 2

Vamos construir a classe chamada E m p r e g a d o s .

Criamos os atributos privados: n o m e do tipo s t r i n g , e s a l a r i o do tipo f l o a t

Em seguida, vamos pro contexto público da nossa classe e vamos desenvolver o construtor. Criamos uma função sem tipo com o mesmo nome da classe ( E m p r e g a d o s ), e esta função receberá os parâmetros N o m e e S a l a r i o (linha 12).

No corpo do construtor, vamos guardar os parâmetros recebidos nos atributos da classe (linhas 13 e 14).

Passo 3

Seguindo em frente, é hora da sobrecarga!

O objetivo é sobrecarregar os operadores < e > para comparar com o atributo s a l a r i o , que é um atributo privado.

Para que os operadores tenham acesso ao atributo privado, o ideal é que eles sejam métodos da função! Então vamos sobrecarregar como função membro, para que a sobrecarga tenha acesso aos membros privados da classe.

Criamos a sobrecarga dentro da classe. A operação que queremos realizar deve retornar t r u e ou f a l s e , então o tipo da sobrecarga é b o o l . Em seguida usamos a palavra chave o p e r a t o r seguida do símbolo < .

O operador < é binário, e por isso utiliza dois parâmetros. Mas como estamos criando a sobrecarga como função-membro, o primeiro parâmetro, por definição, é um objeto da própria classe E m p r e g a d o s . Então só precisamos adicionar um único parâmetro, que será outro objeto da classe E m p r e g a d o s

b o o l   o p e r a t o r < ( E m p r e g a d o s   f u n c i o n a r i o )

Dentro do método de sobrecarga, vamos comparar o atributo s a l a r i o da classe com o atributo s a l a r i o do objeto f u n c i o n a r i o . O resultado dessa comparação é um valor booleano (1 ou 0), que vamos retornar.

Vamos efetuar o mesmo processo com o operador >

E isso finaliza a nossa classe!

Passo 4

Mas antes de fechar a questão, vamos testar a nossa classe.

Dentro da m a i n (   ) vamos instanciar dois objetos, eu criei dois funcionários com nomes e salários aleatorios

E vamos imprimir uma comparação entre esses dois empregados:

O resultado que obtemos é:

Resposta