нкції. p align="justify"> Перевантаження унарних операцій
Можна перевантажити унарні операції, такі, як + + чи -. При перевантаженні унарних операцій за допомогою функцій - методів класу функція-оператор не має параметрів. Унарна операція виконується над об'єктом, що здійснює виклик функції-оператора шляхом неявній передачі покажчика this. p align="justify"> Де int - фіктивний параметр, що указується для постфіксной операції, щоб можна було відрізнити префіксних операцію від постфіксной, він ніяк не вказується при виклику.
Зауваження для постфіксной операції: вона збільшує значення елементів-даних об'єкта на одиницю, але повертає старе значення об'єкта.
Дружня функція
Дружньою функцією класу називається функція, яка, не будучи методом класу, має право доступу до private і protected елементів класу.
Функція не може стати другом класу без його згоди . Для отримання прав одного функція повинна бути описана в тілі класу зі специфікатором friend.
Оскільки функції-друзі не є елементами класів, вони не можуть мати неявний аргумент this. Тому при використанні дружній функції-оператора обидва операнда передаються функції при перевантаженні бінарних операцій, а при перевантаженні унарних операцій передається один операнд. p align="justify"> Дружня функція при виклику не отримує покажчика this. Об'єкти класів повинні передаватися дружньої функції тільки явно через апарат параметрів. При виклику дружньої функції не можна використовувати синтаксис виклику функцій - методів класу:
ім'я об'єкта. імя_функциі
і
указатель_на_об'ект -> імя_функциі,
так як дружня функція не є методом класу. Саме тому на дружню функцію не поширюється і дія специфікаторів доступу (public, private, protected). Місце розміщення прототипу дружньої функції всередині класу байдуже. Права доступу дружньої функції не змінюються і не залежать від специфікаторів доступу. p align="justify"> Використання механізму дружніх функцій дозволяє спростити інтерфейс між класами.
Перевантаження операцій>> і <<для введення-виведення вбудованих типів
У файлі визначені класи ostream і istream, в яких оголошені функції-оператори як методи класів, перенавантажуючі дію побітових операцій>> і <<для організації неформатованого введення і виведення даних базових типів мови С + +.
Перевантаження операцій>> і <<для введення, виведення типів, оголошених користувачем
Дуже корисним прикладом застосування механізму перевантаження операцій і функцій-друзів класів є використання операцій>> і <<для введення, виведення типів, оголошених користувачем.
<...