Перегрузка операции >>; Или как ввести значения в объект самописного класса с помощью cin>>

Здесь коротко показано, как перегрузить операцию >> для самописного класса.
Предположим, мы описываем класс Student. Вот так выглядит основная часть перегрузки для взаимодействия будущих объектов этого класса с cin:

Конечно, в показанном варианте ничего не происходит, но зато программа компилируется и запускается. Ваша задача понять показанный костяк. Если трудно, то можете посмотреть тему:

Там подробно описывается, что происходит и почему так.

После того, как к костяком ознакомились, надо его использовать для того, чтобы учить cin правильному взаимодействию с объектом нашего класса. Делается это достаточно просто. Кроме самого факта наличия перегрузки операции ничего не отличается. Пишется также, как если бы писали ввод в отдельной функции.

В общем-то это всё. Вся перегрузка операции ввода значений в объект с помощью cin и применяемой к нему операции >>. Теперь можно работать с объектом нашего самодельного класса: вытаскивать из него нужные данные, манипулировать приобретёнными им значениями. Давайте допишем программу, чтобы она выводила что-то полезное на экран. Перегрузим операцию вывода.

Вот и всё. Вот так оно и делается.
Если в классе в качестве строковых элементов используются массивы или указатели на массивы и при этом надо, чтобы их значения сохраняли в себя пробелы, то в функции перегрузки ввода надо использовать stream.getline(строка, размер):


Все комментарии на сайте проверяются, поэтому ваш комментарий может появиться не сразу. Для вставки кода в комментарий используйте теги: [php]ВАШ_КОД[/php]

Добавить комментарий

Ваш e-mail не будет опубликован.

− 5 = 1

Поиск

 
     

Случайная книга в электронном формате

https://www.litres.ru/a-o-matushin/programmirovanie-mikrokontrollerov-strategiya-i-taktika-22879970/?lfrom=15589587
Яндекс.Метрика
НАГРАДИ АВТОРА САЙТА
WEBMONEY
R375024497470
U251140483387
Z301246203264
E149319127674

Приходит программер в магазин. Подходит к витрине, хочет достать еды, но не может и говорит: - Rеаd оnlу, однако...

Выражаю свою признательность

  • Максиму очень признателен за указание на мои ошибки и неточности.
  • Sergio ===> за оказание помощи в исправлении моих ошибок
  • Gen ===> за правильное стремление помочь другим новичкам и выявления моих ошибок