osn_progr_final
.pdfOne c1; Two c2;
c2.Show(c1); return 0;}
void Two::Show(One &c1)
{cout<<c1.s1<<“\n”;}
Бачимо, що порядок оголошень класів змінився (порівняно з попереднім прикладом), оскільки клас, в якому міститься прототип фу- нкції-члена, повинен оголошуватись до класу, який визначає функ- цію-член дружньою.
ЗАВДАННЯ
1.Протестувати приклад з класом One. Розглянути випадок взаємнодружніх класів.
2.Описати клас , дружній до класу Літак, який може змінювати значення окремих полів даних цього класу.(Наприклад, збільшувати кількість палива та боєприпасів). Очевидно, що такий клас може служити моделлю заправки.
3.Вважаючи, що заправка може відбуватись в повітрі, визначити клас
Літак_Заправник , похідний від класу Літак.
8.12 ПЕРЕВАНТАЖЕННЯ ОПЕРАЦІЙ.
8.12.1 Перевантаження операцій. Загальний підхід.
В С++ допускається перевантаження операцій. Така можливість надається при роботі з класами. Для перевантаження операцій використовується ключове слово operator. Щоб перевантажити операцію необхiдно описати функцiю такого виду:
<mun> operator <знак операцiї> (параметри).
Перевантажувати можна всi операцiї, крім “*”, “::”,” sizeof” та “.” . Існує два основних способи визначення перевантажених операцій:
1.перевантаженi операції оголошуються як функцiї, дружнi до кла-
су;
2.перевантаженi операції є членами класу.
Приклад:
class complex{ public:
double re,im; complex(){}
281