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


 

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

35685. Проектуваня та виготовлення полиці з ДСП 4.65 MB
  Нашою дизайнерською групою було вирішено розробити проект полиці. Віками на полиці клали найрізноманітніші предмети. В українській традиції існує термін для позначення особливої полиці для посуду мисник.
35686. ПОДГОТОВКА ТВОРЧЕСКОГО ПРОЕКТА 107 KB
  Подготовка творческого проекта по дисциплине Этика и культура межнациональных отношений. Рекомендации помогают студентам организовать собственную самостоятельную работу по подготовке творческого проекта являющимся итоговой работой по дисциплине Этика и культура межнациональных отношений. Методические рекомендации разъясняют сущность творческого проекта содержат примерные темы для него описывают этапы работы над проектом.
35687. Создание творческого проекта 51 KB
  Кто предложил Метод фокальных объектов МФО Ч. К каким методам относится МФО ассоциативный эмпирический когнитивный 10. На чем базируется МФО рассмотрение задач других методов анализ случайных объектов и случайных признаков этих объектов анализ типовых объектов 11. В чем состоит принцип МФО перенесение ярких неожиданных свойств случайных объектов на совершенствуемый объект интерпретация свойств совершенствуемого объекта рассмотрение свойств объекта в разных ситуациях 12.
35688. Мой выбор: оператор ЭВМ. Творческий проект 148 KB
  Обоснование выбора профессии Профессиональное самоопределение важный и ответственный шаг в жизни каждого молодого человека. Но осуществить свободный выбор профессии очень не просто. Показатели Содержание Мои жизненные ценности Семья профессия благополучие Смысл и цель моей жизни Приобретение любимой профессии овладение ею в совершенстве достижение высокого профессионального мастерства Предполагаемая профессия Основной вариант: оператор ЭВМ Запасной вариант: оператор станков с программным управлением Мотивы выбора профессии Интерес к...
35690. Метод проектов (научно-исследовательских или художественно-эстетических) 56 KB
  Результат деятельности каждого из участников проекта фиксируется учитывается его личный вклад в общее дело. На протяжении всего времени реализации проекта осуществляется его психологопедагогическая поддержка и сопровождение. Метод проектов предполагает создание временных творческих коллективов деятельность которых направлена на осуществление данного проекта. Главной целью в данном случае является успешная реализация проекта а личностнопрофессиональное и творческое развитие членов коллектива выступает латентной целью и побочным...