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


 

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

48729. Історія України. НАВЧАЛЬНО-МЕТОДИЧНИЙ ПОСІБНИК 482.09 KB
  Вивчення історії України має не тільки пізнавальне, а й виховне значення, в якому закладено глибокий гуманістичний зміст. Зокрема, одним із головних завдань викладання вітчизняної історії є виховання у студентської молоді почуття патріотизму, громадянської свідомості, виховання майбутніх спеціалістів, яким належить утверджувати державність України.
48730. Методы локализации неисправностей на аппаратуре СВ и РМ 91 KB
  БИВ блок индикатора вспомогательный. Задана внешнее проявление неисправности на экране ЭЛТ БИВ отсутствует изображение. Отследим тракт прохождения сигнала при выводе цифровой информации на экране БИВ. Наша неисправность выражается как отсутствие изображения на экране БИВ.
48731. Проектирование ОКС №7 на городской телефонной сети с УВС и УИС 788.5 KB
  Рисунок 1 – Схемы организации резервного обходного маршрута для направления нормального пучка А→В при пункте назначения F В зависимости от количества возможных маршрутов резервирования для направления нормального пучка А→В возможны варианты: один резервный маршрут. Если резервный маршрут для направления пучка А→В совпадает с нормальным маршрутом из табл. Резервные маршруты совпадают с нормальными маршрутами за исключением одного звена для которого организован резервный маршрут который выбирается из таблицы 11. В данную таблицу вносится...
48732. ПРОЕКТИРОВАНИЕ АНАЛОГОВО-ЦИФРОВОГО ПРЕОБРАЗОВАТЕЛЯ С USB ВЫХОДОМ 1.37 MB
  Расчет аналоговой части АЦП Расчет цифровой части АЦП Микросхема АЦП Фильтр нижних частот Заключение Библиографический список Введение Аналогоцифровой преобразователь АЦП представляет собой устройство обеспечивающее преобразование аналогового сигнала в цифровой код который передается в микропроцессорную систему.
48733. Организация производства асфальта с полимерными добавками 317.5 KB
  Таблица 1. Европа Япония Китай Канада по достоинству оценили физикотехнические свойства асфальта с полимерными добавками и используют его повсеместно Таблица 2. Таблица 2. Проведем анализ внешней и внутренней среды предприятия чтобы выявить сильные и слабые стороны ООО СМУ АБЗ Таблица 3.
48734. Проектирование электрической сети для электроснабжения потребителей цнлюлозно – бумажной промышленности 1.35 MB
  По заданному расположению источника питания и потребителей электроэнергии составляем схемы электрической сети. Находим расстояние между районной электрической станцией РЭС и подстанциями, и между подстанциями.
48735. Проектирование электрической сети 1.54 MB
  Главным потребителем электроэнергии является промышленность. За последние 10 лет в структуре энергобмена страны более чем в два раза увеличилась доля электроэнергии, потребляемой на потенциально-бытовые нужды
48737. Коэффициент передачи двигателя по регулирующему воздействию 662.5 KB
  Исходя из данной САР для устойчивого состояния системы необходимо чтобы Мвр = Мс. В соответствии с уравнением замыкания системы et = yt – x1t Þ DUt = Uyt – Uтгt 4. мы снова пришли к устойчивому состоянию системы при котором Мвр = Мс. Принцип работы системы.