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


 

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

71623. БИЗНЕС-ПЛАН СТРОИТЕЛЬСТВА ГОСТИНИЧНОГО КОМПЛЕКСА ГК КРОНА №2 442.37 KB
  Финансовый план реализации проекта. Анализ чувствительности проекта. Статистический анализ проекта методом Монте-Карло. Он также дает возможность: определить пути и способы достижения поставленных целей; смягчить влияние слабых сторон предприятия; отследить новые тенденции...
71625. Особенности саморегуляции учащихся с высоким уровнем тревожности 180.81 KB
  Гипотеза исследования: между учащимися с высоким и низким уровнями тревожности существуют достоверные различия в особенностях саморегуляции, свидетельствующие о слабой сформированности основных регуляторных свойств у учащихся с высоким уровнем тревожности.
71626. ПОЛЯРИЗАЦИЯ СВЕТА 518.82 KB
  Возможность применения эффекта Фарадея для бесконтактного измерения в токопроводе величины постоянного тока очевидным образом вытекает из закона Верде. Постоянный ток порождает вокруг токопровода постоянное магнитное поле поместив в которое чувствительный элемент с линейно...
71629. Организационная структура компании «ЗАО» 4финанс 258.73 KB
  Учитывая растущую роль организаций занимающихся микрокредитованием необходимо отметить что в случае возникновения у такой организации каких-либо серьезных проблем они могут автоматически распространиться на весь регион в котором она работает и спровоцировать...
71630. Разработка мероприятий по совершенствованию учета расчетов с поставщиками и покупателями в ООО «Дельта Телеком-Урал» 177.67 KB
  В настоящее время большое внимание уделяется расчетам с дебиторами и кредиторами. Следовательно право на получение дебиторской задолженности является имущественным правом а сама дебиторская задолженность является частью имущества организации.
71631. Разработка элементов фирменного стиля 821 KB
  Цель дипломной работы: выявление особенностей, характерных для разработки фирменного стиля при помощи графических редакторов. Предмет – особенности компьютерной графики, используемой при создании элементов фирменного стиля. Объект – графические программы, используемые при создании фирменного стиля.