three_d(int a, int b, int с) { x = a; у = b; z = c; }
friend ostream &operator<<(ostream &stream, three_d obj);
};
// Отображение координат X, Y, Z (оператор вывода для класса three_d).
ostream &operator<<(ostream &stream, three_d obj)
{
stream << obj.x << ", ";
stream << obj.у << ", ";
stream << obj.z << "\n";
return stream; // возвращает поток
}
int main()
{
three_d a(1, 2, 3), b(3, 4, 5), с (5, 6, 7);
cout << a << b << c;
return 0;
}
Обратите внимание на то, что переменные
Для перегрузки операторов ввода используйте тот же метод, который мы применяли при перегрузке оператора вывода. Например, следующий оператор ввода обеспечивает ввод трехмерных координат. Обратите внимание на то, что он также выводит соответствующее сообщение для пользователя.
/* Прием трехмерных координат (оператор ввода для класса three_d).
*/
istream &operator>>(istream &stream, three_d &obj)
{
cout << "Введите координаты X, Y и Z:
stream >> obj.x >> obj.у >> obj.z;
return stream;
}
Оператор ввода должен возвращать ссылку на объект типа
Общий формат оператора ввода имеет следующий вид.
istream &operator>>(istream &stream, object_type &obj)
{
// код операторной функции ввода данных
return stream;
}
Использование функции ввода данных для объектов типа
// Использование перегруженного оператора ввода.
#include
using namespace std;
class three_d {
int x, y, z; // 3-мерные координаты
public:
three_d(int a, int b, int с) { x = a; у = b; z = c; }
friend ostream &operator<<(ostream &stream, three_d obj);
friend istream &operator>>(istream &stream, three_d &obj);
};
// Отображение координат X, Y, Z (оператор вывода для класса three_d).
ostream &operator<<(ostream &stream, three_d obj)
{
stream << obj.x << ", ";
stream << obj.у << ", ";
stream << obj.z << "\n";
return stream; // возвращает параметр stream
}
// Прием трехмерных координат (оператор ввода для класса three_d).
istream &operator>>(istream &stream, three_d &obj)
{
cout << "Введите координаты X, Y и Z: ";
stream >> obj.x >> obj.у >> obj.z;
return stream;
}
int main()
{
three_d a(1, 2, 3);
cout << a;
cin >> a;
cout << a;
return 0;
}
Вот как выглядит один из возможных результатов выполнения этой программы.
1, 2, 3
Введите координаты X, Y и Z: 5 6 7
5, 6, 7
Подобно функциям вывода, функции ввода не должны быть членами класса, для обработки данных которого они предназначены. Они могут быть