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 не є специфікатором доступу і не успадковується.


 

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

47154. Право на достоверную информацию о состоянии окружающей среды 69.06 KB
  Как реакция на эту общественную потребность Законом Об охране окружающей природной среды гражданам было предоставлено право требовать от соответствующих органов предоставления своевременной полной и достоверной информации о состоянии окружающей среды и мерах по ее охране. Позже Конституция РФ также закрепила право каждого на достоверную информацию о состоянии окружающей среды. Какую информацию о состоянии окружающейсреды можно считать достоверной полной и своевременной Достоверной является неискаженная заведомо или по небрежности...
47156. Международные книжные ярмарки: названия, особенности, значение для мирового книгоиздания 69.92 KB
  Международные книжные ярмарки: названия особенности значение для мирового книгоиздания. Книжные ярмарки помогали издателям представить свой ассортимент а книготорговцам установить с ними отношения на будущее и купить партии тиражей на коммерческие с их точки зрения издания. На эту ярмарку собираются представители издательств всего региона – от Сахалина до Якутии представлены издания учебных центров и университетов издательства ДВО РАН и весь спектр производимой в регионе продукции. Аннотация как элемент аппарата издания.
47159. Формирование принципов редактирования в издательской практике России 40–50-х годов XIX века 70.5 KB
  Журналы расходились по всем концам России становились умственной и духовной пищей передавались из рук в руки зачитывались до дыр. Современники не случайно называли действовавший устав чугунным понимая опасность такой ситуации в России. Белинского в теорию редактирования В работах Белинского поднимаются вопросы о целях и задачах печати в России особенно это касается вопросов создания журнала его популярности отличий журнала от газеты характере журнала и его отделов и т.
47161. Государственный экологический контроль. Права государственных экспертов 71.28 KB
  Государственный контроль в области охраны окружающей среды государственный экологический контроль осуществляется федеральными органами исполнительной власти и органами исполнительной власти субъектов Российской Федерации. Государственный контроль в области охраны окружающей среды государственный экологический контроль осуществляется в порядке установленном Правительством Российской Федерации. В случае если при строительстве реконструкции капитальном ремонте объектов капитального строительства предусмотрено осуществление...
47162. Subordinate clauses of adverbial positions 71.5 KB
  Adverbial clauses are usually classified according to their meaning, that is, according to the relation they bear to the main clause. They differ from nominal and attributive clauses in that they are introduced by conjunctions with a more distinct meaning