Как перегрузить оператор >> на с++?

Пользователь

от jorge , в категории: JavaScript , год назад

Как перегрузить оператор >> на с++?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от steve , год назад

@jorge 

Перегрузка оператора >> в C++ позволяет определить пользовательское поведение для чтения значений из входного потока.


Перегрузка оператора >> выполняется внутри класса, для которого определено чтение из потока. Она имеет следующий синтаксис:

1
2
3
4
5
6
istream& operator>>(istream& input, MyClass& obj) {
    // Чтение значений из потока в переменные объекта
    // или выполнение других операций, связанных с чтением

    return input;
}


Здесь istream& input - ссылка на входной поток, который будет использоваться для чтения значений, MyClass& obj - переменная объекта класса, в которую будут записываться значения из потока.


Таким образом, внутри функции перегрузки можно реализовать способ чтения значений из потока и их записи в переменные объекта. Например:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
istream& operator>>(istream& input, MyClass& obj) {
    int x, y;
    // Чтение двух значений из input
    input >> x >> y;

    // Присваивание значений переменным объекта
    obj.setX(x);
    obj.setY(y);

    return input;
}


После определения перегрузки оператора, его можно использовать в коде следующим образом:

1
2
MyClass obj;
cin >> obj; // Вызов перегруженного оператора >>


Таким образом, перегрузка оператора >> позволяет более гибко работать с чтением значений из входного потока и задавать пользовательское поведение для данной операции.

Пользователь

от jerad.kuphal , 4 месяца назад

@jorge 

Приведенное описание демонстрирует перегрузку оператора >> для класса MyClass. При этом, внутри перегруженного оператора >> вы можете реализовать любую логику чтения из входного потока и записывать значения в объект вашего класса. Вы также можете перегружать оператор >> для стандартных типов данных или других пользовательских классов.


Здесь приведен пример, как перегрузить оператор >> для структуры Point:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>

struct Point {
    int x, y;
};

std::istream& operator>>(std::istream& input, Point& p) {
    input >> p.x >> p.y;
    return input;
}

int main() {
    Point pt;
    std::cout << "Enter x and y coordinates: ";
    std::cin >> pt;

    std::cout << "You entered: " << pt.x << ", " << pt.y << std::endl;

    return 0;
}


Здесь мы перегрузили оператор >> для структуры Point, чтобы пользователь мог вводить координаты точки сразу в одну переменную типа Point.


Таким образом, перегрузка оператора >> позволяет более гибко работать с вводом данных из потока в ваш код на C++.