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


 

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

1578. Синтез плоских кулачковых механизмов 119.55 KB
  Построение кинематических диаграмм графическим методом. Синтез кулачкового механизма с роликовым толкателем. Синтез кулачкового механизма с тарельчатым толкателем. Построение зубчатого зацепления. Определение кинематических характеристик всех звеньев. Построение и анализ диаграммы Виттенбауэра. Силовой расчет для рычажно-шарнирного механизма.
1579. Оцінка судової діяльності Приморського районного суду міста Маріуполя 79.85 KB
  Основні засади судочинства в Україні. Порядок призначення (обрання) суддів до місцевого суду. Повноваження місцевих судів. Обрання, атестація та дисциплінарна відповідальність суддів. Правовий і соціальний захист суддів.
1580. Анализ деятельности автотранспортного предприятия Речицкое межраенное АТП 222.83 KB
  Структурная схема управления на предприятии. Обеспечения предприятия тепловой энергией водой и электроэнергией. Требования по охране труда перед началом работы. Организация на предприятии охраны окружающей среды. Должностная инструкция руководителей технических служб.
1581. Розрахунок стержньового стрічкового трансформатора з повітряним охолодженням 78.69 KB
  Вибираємо марку електротехнічної сталі. Для електротехнічної сталі основними номінальними характеристиками є: питомі втрати і магнітні значення. Визначаємо кількість витків первинної і вторинної обмоток. Визначаємо енергетичні характеристики трансформатора.
1582. Проектування жіночих черевиків на блискавці на середньому каблуці на байковій підкладці 79.4 KB
  У курсовому проекті ми використовуємо копіювально-графічну методику проектування. Проектування деталей взуття за цією методикою включає такі етапи: встановлення умовної розгортки колодки в осі координат, розрахунок і нанесення базисних ліній.
1583. Проектирование жилого дома с фасадным зданием 107.7 KB
  В данном курсовом проекте необходимо запроектировать жилой дом. В состав графических работ входят: фасад гражданского здания М 1: 200, план гражданского здания М 1:200, продольный и поперечный разрезы М 1:200, схема плит покрытий и фундаменов М 1:200.
1584. Гонадальные гормоны и их действие у самок разных видов 20.32 KB
  Половой сезон-период, в течении которого проявляется или более напряженно протекает половая жизнь. Он обычно бывает связан с временем года, видовыми особенностями животного.
1585. Гонадотропные гормоны гипофиза. Нейрогуморальная регуляция половой функции самок и самцов 20.65 KB
  Экспериментально установлено, что введение ФСГ в организм кастрированной самки не вызывает морфологических изменений в ее половом аппарате. При денервации гипофиза(нарушение нервных связей) его функции нарушаются/
1586. Два физиологических типа спермы 18.43 KB
  Сперма-совокупность сперматозоидов из сыворотки(плазмы)которая образуется придаточными половыми железами и придатком канала семменика.