69712

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

Лекция

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

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

Украинкский

2014-10-09

25 KB

3 чел.

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


 

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

60304. Основы реанимации. Методические рекомендации 959.5 KB
  Понятно что этого времени будет достаточно для наступления необратимых изменений в коре головного мозга пострадавшего. Попытки оживления вдуванием воздуха в рот пострадавшего были впервые описаны в 1753 году в Санкт-Петербургских ведомостях когда профессор...
60305. Первая помощь при острой сердечно-сосудистой недостаточности 5.91 MB
  Практический навык первичная диагностика пострадавшего НМС и ИВЛ. Началу оказания первой медицинской помощи предшествует оперативное принятие верных и безопасных для спасателя решений так как этот шаг предопределяет успех и в сохранении жизни самого пострадавшего.
60306. Основы диагностики и реанимации (II) 4.99 MB
  Началу оказания первой медицинской помощи предшествует оперативное принятие верных и безопасных для спасателя решений так как этот шаг предопределяет успех и в сохранении жизни самого пострадавшего.
60307. ПЕРВАЯ ПОМОЩЬ ПРИ РАНЕНИЯХ 1.85 MB
  Общие принципы оказания первой помощи при ранениях остановка кровотечения дезинфекция раны фиксирование конечности обезболивание безопасная транспортировка. Соответственно признаками ранений будут являться следующие...
60309. ПЕРВАЯ ПОМОЩЬ ПРИ ТРАВМАХ ГОЛОВЫ И ШЕИ 1.91 MB
  Началу оказания первой медицинской помощи предшествует оперативное принятие верных и безопасных для спасателя решений так как этот шаг предопределяет успех и в сохранении жизни самого пострадавшего. Первичный осмотр пострадавшего...
60310. Первая помощь при повреждениях живота 2.86 MB
  Актуальность и виды повреждений живота. Закрытые повреждения живота первая помощь при них. Открытые повреждения живота первая помощь при них.