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


 

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

57461. Математика в профессиях 71.5 KB
  Воспитательные -– формирование логического абстрактного мышления; овладение интеллектуальными умениями и мыслительными операциями: воспитание организованности дисциплинированности умения работать в коллективе; ориентация учащихся на выбор профессии...
57464. Животные паразиты и животные - хозяева 40 KB
  Правила личной гигиены карточки с изображением животных паразитов и хозяев для закрепления материала магнитная доска вопросы для фронтального опроса по домашнему заданию.
57465. Урок-викторина «Мифы древней Греции» 91.5 KB
  Цель: повторение и закрепление материала по теме; развитие творческих способностей учащихся, воспитывать интерес к литературе, культуру коллективного ответа.
57466. В белом облаке белка - яркое солнышко желтка 4.53 MB
  Существует Во вторую пятницу октября во многих странах мира отмечается Всемирный день яйца. Изучение нового материала: Яйца -– пищевой продукт имеющий высокую ценность обладающим нежным приятным вкусом.