Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Не підтверджено.doc
Скачиваний:
0
Добавлен:
07.01.2020
Размер:
3.08 Mб
Скачать

Int х, у, z; //Тривимірні координати (тепер це private-члени) public:

kooClass(int а, int b, int с) {х = а; у = b; z = с;}

friend ostream &operator«(ostream &stream, kooClass obj);

};

// Відображення тривимірних координат x, у, z // Перевизначений оператор виведення даних для класу kooClass ostream &operator«(ostream &stream, kooClass obj)

{

stream « obj.x «", stream « obj.y «", stream « obj.z « endl;

return stream; // Повертає посилання на параметр stream

}

Int mainO

{

kooClass 0bjA(1, 2, 3), 0bjB(3,4, 5), 0bjC(5,6, 7);

// Перевизначений оператор виведення даних cout « ObjA « ObjB « ObjC;

getchO; return 0;

}

Зверніть увагу на те, що змінні х, у і z у цій версії коду програми є закритими у класі kooClass, проте операторна функція виведення даних звертається до них безпосередньо. У наведеному прикладі якраз і виявляється велика перевага "дру­зів" класу: оголошуючи операторні функції введення та виведення даних "друзя­ми" класу, для якого вони визначаються, ми тим самим підтримуємо механізм ін­капсуляції об'єктно-орієнтованого програмування.

  1. Створення перевюначених операторів введення даних

Для перевизначення операторів введення даних використовують аналогічний підхід, який було застосовано при перевизначенні операторів виведення даних. Наприклад, наведений нижче перевизначений оператор введення даних забезпе­чує введення тривимірних координат. Зверніть увагу на те, що він також виводить відповідне повідомлення для користувача.

// Прийняття тривимірних координат х, у, z

// Перевизначений оператор введення даних для класу kooClass

Istream &operator»(istream &stream, kooClass &obj)

{

Cout«"Введіть координати X, у і z:

// Перевизначений оператор введення даних

Stream » obj.X » obj.Y » obj.Z;

return stream; // Повертає посилання на параметр stream

}

Перевизначений оператор введення даних повинен повертати посилання на об'єкт типу istream. Окрім цього, перший параметр повинен бути посиланням на об'єкт типу istream. Цей тип належить потоку, що вказується зліва від оператора "»". Другий параметр є посиланням на об'єкт, який приймає значення, що вво­дяться. Оскільки другий параметр - посилання на об'єкт, то його можна модифі­кувати при введенні інформації.

Загальний формат перевизначеного оператора введення даних має такий виг­ляд:

Istream &operator»(istream &stream, objectType &obj)

{

// Код операторної функції введення даних

turn stream; // Повертає посилання на параметр stream

}

Особливості використання операторних функцій введення та виведення да­них для об'єктів типу kooClass продемонстровано в такому коді програми.

Код програми 9.3. Демонстрація механізму перевизначення операторів введення/виведення потокової інформації

#include <vcl>

#include <iostream> // Для потокового введення-виведення

#include <conio> // Для консольного режиму роботи

using namespace std; // Використання стандартного простору імен