English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

C++ Sobrecarga de operadores de entrada/saída

C++ Sobrecarga de Operador e Função Sobrecarregada

C++ É possível usar os operadores de extração de fluxo >> e os operadores de inserção de fluxo << para entrada e saída de tipos de dados integrados. Você pode sobrecarregar os operadores de extração de fluxo e os operadores de inserção de fluxo para operar sobre objetos e tipos de dados de tipos de dados personalizados do usuário.

Aqui, é importante notar que precisamos declarar a função de sobrecarga de operador como função amiga da classe, assim podemos chamar a função diretamente sem criar um objeto.

O exemplo a seguir demonstra como sobrecarregar os operadores de extração >> e inserção <<.

#include <iostream>
using namespace std;
 
class Distância
{
   private:
      int pés;             // 0 até infinito
      int palmos;           // 0 até 12
   public:
      // Construtor necessário
      Distância(){
         pés = 0;
         palmos = 0;
      }
      Distância(int f, int i){
         pés = f;
         palmos = i;
      }
      friend ostream &operator<<( ostream &output, 
                                       const Distância &
      { 
         output << "F: " << D.pés << " I: " << D.palmos;
         return output;            
      }
 
      friend istream &operator>>( istream &input, Distância &D )
      { 
         input >> D.pés >> D.palmos;
         return input;            
      }
};
int main()
{
   Distância D1(11, 10), D2(5, 11), D3;
 
   cout << "Entrada do valor do objeto: " << endl;
   cin >> D3;
   cout << "Primeira Distância : " << D1 << endl;
   cout << "Segunda Distância :" << D2 << endl;
   cout << "Terceira Distância :" << D3 << endl;
 
 
   return 0;
}

Quando o código acima for compilado e executado, ele produzirá o seguinte resultado:

$./a.out
Inserir o Valor do Objeto :
70
10
Primeira Distância : F : 11 I : 10
Segunda Distância : F : 5 I : 11
Terceira Distância : F : 70 I : 10

C++ Sobrecarga de Operador e Função Sobrecarregada