C++ Перегрузка операторов ввода/вывода
Перегрузка операторов и перегрузка функций в C++
C++ может использовать оператор извлечения из потока >> и оператор вставки в поток << для ввода и вывода встроенных типов данных. Вы можете перегрузить оператор извлечения из потока и оператор вставки в поток для работы с пользовательскими типами данных, такими как объекты.
Здесь один важный момент: нам нужно объявить функции перегрузки операторов как дружественные функции класса, чтобы мы могли вызывать функции напрямую, не создавая объект.
В следующем примере показано, как перегрузить оператор извлечения >> и оператор вставки <<.
Пример
#include <iostream>
using namespace std;
class Distance
{
private:
int feet; // от 0 до бесконечности
int inches; // от 0 до 12
public:
// Обязательный конструктор
Distance(){
feet = 0;
inches = 0;
}
Distance(int f, int i){
feet = f;
inches = i;
}
friend ostream &operator<<( ostream &output,
const Distance &D )
{
output << "F : " << D.feet << " I : " << D.inches;
return output;
}
friend istream &operator>>( istream &input, Distance &D )
{
input >> D.feet >> D.inches;
return input;
}
};
int main()
{
Distance D1(11, 10), D2(5, 11), D3;
cout << "Введите значение объекта : " << endl;
cin >> D3;
cout << "Первое расстояние : " << D1 << endl;
cout << "Второе расстояние :" << D2 << endl;
cout << "Третье расстояние :" << D3 << endl;
return 0;
}
Когда приведенный выше код скомпилирован и выполнен, он выдает следующие результаты:
$./a.out Enter the value of object : 70 10 First Distance : F : 11 I : 10 Second Distance :F : 5 I : 11 Third Distance :F : 70 I : 10Другие расширения