69712

Дружні функції

Лекция

Информатика, кибернетика и программирование

Метод як правило використовується для реалізації властивостей об’єкту а у вигляді дружніх функцій оформляються дії не представляючі властивості класу але концептуально що входять в його інтерфейс і потребуючі в доступі до його прихованих полів наприклад перевизначення операції...

Украинкский

2014-10-09

25 KB

2 чел.

Тема 2: Дружні функції

Дружні функції застосовуються для доступу до прихованих полів класу і є альтернативою методам. Метод, як правило, використовується для реалізації властивостей об'єкту, а у вигляді дружніх функцій оформляються дії, не представляючі властивості класу, але концептуально що входять в його інтерфейс і потребуючі в доступі до його прихованих полів, наприклад, перевизначення операції виведення об'єктів. Правила опису і особливості дружніх функцій:

1. Дружня функція оголошується всередині класу, до елементів якого їй потрібен доступ, з ключовим словом friend. Як параметр їй повинен передаватися об'єкт або посилання на об'єкт класу.

2. Дружня функція може бути звичайною функцією або методом другого раніше визначеного класу. На неї не розповсюджується дія специфікаторів доступу, місце розміщення її оголошення в класі байдуже.

Одна функція може бути дружньою відразу декільком класам.

Приклад опису двох функцій, дружніх класу monstr. Функція kill є методом класу hero, а функція steal_ammo не належить жодному класу. Обом функціям як параметр передається посилання на об'єкт класу monstr.

class monstr;     // Попереднє оголошення класу

class hero

{

public: void kill(monstr &);

…..

};

class monstr

{

friend int steal_ammo(monstr &);

friend void hero::kill(monstr &);

// Клас hero повинен бути визначений раніше

};

int steal_ammo(monstr &M){return --M.ammo;}

void hero::kill(monstr &M){M.health = 0: M.ammo = 0;}

Використання дружніх функцій потрібно по можливості уникати, оскільки вони порушують принцип інкапсуляції і, таким чином, утрудняють відладку і модифікацію програми.

Дружній клас

Якщо всі методи якого-небудь класу повинні мати доступ до прихованих полів іншого, весь клас оголошується дружнім за допомогою ключового слова friend. В наведеному прикладі клас mistress оголошується дружнім класу hero:

class hero{

friend class mistress;

}

class mistress{

void fl();

void f2();

}

Функції fl і f2 є дружніми по відношенню до класу hero (хоча і описані без ключового слова friend) і мають доступ до всіх його полів. Оголошення friend не є специфікатором доступу і не успадковується.


 

А также другие работы, которые могут Вас заинтересовать

82204. Ці жанри, жанри, жанри… 154.5 KB
  Мета: Розширити знання та уявлення учнів про жанрове розмаїття художніх творів (романс, симфонія, історичний, батальний, побутовий, анімалістичний жанри). Розвивати вміння створювати композиції на основі емоційно-звукового сприйняття.
82205. Розумники і розумниці 169.5 KB
  Мета: виховувати любов до рідної мови; розвивати логічне мислення, пам’ять, кмітливість; закріпити програмовий матеріал; викликати бажання вивчати і любити рідну мову. Обладнання: кросворд, роздатковий матеріал, вислови про мову.
82207. Я є рушниця, радістю набита, якою вистрілю на честь життя 160.5 KB
  До 100-річчя з дня народження БогданаІгоря Антонича Мета: ознайомити учнів з творчістю поета його світобаченням поповнити знання школярів позапрограмовими творами автора розвивати і удосконалювати навички виразного читання виховувати естетичні смаки...
82208. Бабусине свято 8.95 MB
  Прищеплювати почуття любові і поваги до старших членів сімї виховувати почуття обовязку і турботи про бабусів. Наші бабусі рідненькі Для вас готували це свято. Любі добрі бабусі Ми ваші внучата. Чи є в світі краща і рідніша людина Звичайно що ні Скільки пережили наші бабусі скільки недоспали ночей голублячи онучат.
82209. Технології вдосконалення техніки читання. Швидке читання – запорука успішного навчання 58 KB
  Мета: Ознайомити батьків з нормами читання у початковій школі згідно програми. Викликати інтерес у батьків з питань виховання любові до читання художньої літератури дітьми та сімейного читання.
82211. Художнє втілення ідеї гуманізму в романі Ч.Діккенса «Пригоди Олівера Твіста». Соціальна дієвість творчості Ч.Діккенса 38.03 KB
  Діккенс чи не вперше в англійській літературі позбавив злочинний світ будь-якої романтики. Але автор Пригод Олівера Твіста вперто захищав своє право зображувати злодіїв у всій їх потворності такими якими вони були насправді: І тому я не приховав жодної дірки в сюртуку Пронози жодної папільйотки у скуйовдженому волоссі Ненсі.