Ввод объекта в C++
Поток std::cin с >> забирает числа из ввода.
Для своего типа ту же запись дает свободная функция
operator>>: она получает поток и ссылку на объект,
читает поля и возвращает поток для цепочки команд.
При закрытых полях функцию объявляют friend
внутри класса. Запишем Vec:
#include <iostream>
class Vec {
public:
friend std::istream& operator>>(std::istream& in, Vec& v);
private:
int x = 0;
int y = 0;
public:
int getX() const {
return x;
}
int getY() const {
return y;
}
};
std::istream& operator>>(std::istream& in, Vec& v) {
in >> v.x >> v.y;
return in;
}
Сейчас создадим объект и прочитаем координаты:
int main() {
Vec point;
std::cin >> point;
std::cout << point.getX() << " " << point.getY() << "\n";
return 0;
}
Сделайте класс Pair с закрытыми a и b.
Добавьте дружественный operator>> и методы чтения.
Считайте два числа в объект и выведите их через пробел.
Для Pair прочитайте из ввода 7 и 2
одной командой >> и напечатайте оба поля.