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

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

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

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

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

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

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


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

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

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

37 + = 40

Поиск

 
     

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

https://www.litres.ru/uriy-schupak/win32-api-razrabotka-prilozheniy-dlya-windows/?lfrom=15589587
Яндекс.Метрика
НАГРАДИ АВТОРА САЙТА
WEBMONEY
R375024497470
U251140483387
Z301246203264
E149319127674

Демотиватор программирование на языке ада

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

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