У цій статті ми розповімо про наступне:
- Що таке дружні функції і, головне, навіщо вони потрібні.
- Чим відрізняються звичайні методи класу від дружніх функцій класу.
- Як оголошувати і визначати наші дружні функції.
- Як викликати дружні функції з головною main () функції.
Найважливішим, а й, швидше за все, самим незрозумілим для вас зараз стане визначення дружньої функції.
Дружня функція - це функція, яка не є членом класу, але має доступ до членів класу, оголошеним в полях private або protected.
Довго не вникати в суть цього визначення, а краще відразу переходите до наступного абзацу. Обіцяю, що після прочитання статті ви повернетеся до цього визначення і вас відвідає думка: «Ну так - так і є! Тут все зрозуміло! »
using namespace std;
name = new char [20];
cout <<". Деструктор. " < friend void getData (Woman25); >; // Закінчилося визначення класу Woman25 void setData (char * n, int w, Woman25 object) // визначаємо friend-функцію setData void getData (Woman25 object) // визначаємо friend-функцію getData cout < void Woman25 :: setData (char * n, int w) / / визначаємо set-метод класу void Woman25 :: getData () // визначаємо get-метод класу cout < void Woman25 :: advise () // визначаємо метод класу Рада (advise) if (weight <55)/если вес меньше 55 кг cout <<"Вам надо потреблять больше калорий!" < > Else if (weight> = 55 weight <= 65)/если вес в пределах 55-65 кг cout <<"Ваш вес в норме!" < cout <<"Вам надо ограничивать себя в еде!" < Woman25 Norm; // створюємо об'єкт Norm, спрацює конструктор і weight буде = 60, name - Норма Norm.getData (); // виклик методу класу Woman25 Anna; // Другий об'єкт Anna.setData ( "Анна", 100); // Виклик методу класу Anna.getData (); // Виклик методу класу Anna.advise (); // Виклик методу класу Woman25 Inna; // Третій об'єкт setData ( "Інна", 50, Inna); // Виклик дружньої функції getData (Inna); // Виклик дружньої функції Inna.advise (); // Виклик методу класу Тепер починається, мабуть, найцікавіше - визначення поза класом наших дружніх функцій і звичайних методів класу. Все це розташовується в рядках 32 - 66. Дивіться, коли ми визначаємо наші дружні функції. рядки 32 - 36 і 38 - 41. ми не використовуємо оператор. подвійна двокрапка (область видимості методу). Це вже говорить нам про те, що дружня функція не належить класу, не є його компонентом. А при визначенні інших методів використання оператора. є обов'язковим. Метод класу advise (). на підставі отриманих даних про вагу, дає користувачеві один з рад або повідомляє, що вага в нормі. Переходимо в головну функцію - рядки 68 - 87. Тут ми створюємо об'єкт класу Woman25 Norm ;. при створенні якого спрацює конструктор і ініціалізує елементи name і weight. Викликаємо метод класу Norm.getData (); щоб вивести на екран значення норми. З другим створеним об'єктом Woman25 Anna; працюємо, викликаючи звичайні set і get - методи класу, а з третім об'єктом Woman25 Inna; - викликаючи дружні функції. Як бачите, викликаються вони як функції, які не належать класу. Об'єкт класу ми передаємо, як параметр. Запускаємо програму і бачимо наступне: Деструкція. Для продовження натисніть будь-яку клавішу. Тепер, як завжди, трохи теорії, для закріплення матеріалу: Ось і все для початку.
. Деструкція.
. Деструкція.
Схожі статті