§ 3. Перагрузка аперацый
3.2. Лагічны тып даных
Для стандартных тыпаў даных такіх як int або double ўвод і вывад рэалізаваны праз стандартныя аператары >> і <<. Гэтыя ж аператары перагружаныя для ўводу-вываду радкоў. Для карыстальніцкіх тыпаў даных, якія маюць мноства палёў, таксама можна перагрузіць аператары ўводу-вываду. Перагрузка аператараў < < і >> нашмат спрашчае працэс вываду аб'екта на экран і атрыманне карыстальнiцкага ўводу з запісам даных у аб'ект класа. Разгледзім перагрузку аператара <<. Аператар з'яўляецца бінарным аператарам, таму яго перагрузка будзе аналагічная перагрузцы аператара «+», разгледжанай у прыкладах 3.5 і 3.6. Левым аперандам у аператара < < з'яўляецца аб'ект cout, а правым — аб'ект класа, які трэба вывесці. Аператар, які перавызначаецца, павінен вяртаць значэнне тыпу ostream, аб'ектам якога з'яўляецца cout. Параметры, апісанай функцыі, павінны быць спасылкамі (прыклады 3.7 i 3.8). Таксама спасылкай павінен быць і вынік, які вяртаецца, паколькі ostream забараняе сваё капіраванне. Перагрузка аператара ўводу адбываецца аналагічна. Адрозненне ў тым, што cin з'яўляецца аб'ектам тыпу istream (прыклады 3.9 i 3.10). Спасылка на аб'ект класа, які з'яўляецца другім параметрам, не можа быць канстантай, паколькі аб'ект змяняецца пры ўводзе. Пасля перазагрузкі аператараў уводу і вываду іх можна выкарыстоўваць таксама для чытання і запісу файлаў. |
Прыклад 3.7. Перагрузка аператара вываду << для класа Vect, вызначанага ў прыкладзе 3.5. Аб'ява:
Апісанне:
Прыклад 3.8. Перагрузка аператара вываду << для класа Matrix, вызначанага ў прыкладзе 3.6. Аб'ява:
Апісанне:
Прыклад 3.9. Перагрузка аператара вываду >> для класа Vect, вызначанага ў прыкладзе 3.5. Аб'ява:
Апісанне:
Прыклад 3.10. Перагрузка аператара вываду >> для класа Matrix, вызначанага ў прыкладзе 3.6 Аб'ява:
Апісанне:
|