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


 

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

30436. Форма правления и государственный режим в Бразилии, формирование и взаимодействие высших государственных органов 15.22 KB
  Акты Президента требуют одобрения обеих палат; если проект не принимается одной из палат то он считается отвергнутым. Если пост Президента становится вакантным или возникают препятствия в исполнении им своих обязанностей то их исполняет вицепрезидент а если названные обстоятельства возникают и в отношении президента и вицепрезидента одновременно то пост главы государства замещается в следующей последовательности председатель Палаты депутатов председатель Федерального сената и председатель Федерального верховного суда. Президента...
30437. Бразильский федерализм и местное самоуправление 15.64 KB
  территориальная структура была несколько реорганизована в частности федеральные территории Рорайма и Амапа обрели статус штатов. 23 установила совместную сферу компетенции Союза штатов и муниципалитетов и федерального округа распределение которой а точнее сотрудничество в которой опятьтаки передано в ведение дополняющего закона. Наконец третья сфера компетенции установленная основным законом конкурирующая компетенция Союза штатов и федерального округа к которой в частности отнесено трудовое исправительное экономическое и...
30438. Конституционное развитие Казахстана 16.32 KB
  Принципиально новыми положениями Конституционного закона стали провозглашение Казахстана независимым демократическим правовым государством а также преобразование Казахской ССР в Республику Казахстан. Закон предусмотрел такой государственный орган как Комитет конституционного надзора призванный обеспечить верховенство Конституции. Начальный этап конституционного развития Республики Казахстан завершился принятием 28 января 1993 г. Практическое применение показало что отдельные вопросы требующие конституционного...
30439. Форма правления и государственный режим в Казахстане, формирование и взаимодействие высших государственных органов 16.15 KB
  2 Конституции республика является государством с президентской формой правления. Однако анализ содержания Конституции в частности системы государственных органов показывает что с точки зрения принятой классификации форм правления Казахстан представляет собой не президентскую а смешанную республику функционирующую по президентскому тину. В Конституции же Казахстана мы находим и возможность хотя и усеченную выражения Парламентом вотума недоверия правительству п. 3 Конституции система сдержек и противовесов последовательного применения не...
30440. Политико-территориальное устройство и организация местной власти в Казахстане 18.2 KB
  и местных исполнительных органов устанавливая что компетенция маслихатов порядок их организации и деятельности правовое положение их депутатов равно как и компетенция и порядок деятельности местных исполнительных органов устанавливаются законом. Такой закон сегодня Закон О местных представительных и исполнительных органах Республики Казахстан от 10 декабря 1993 г. 87 определяет правовые основы организации и деятельности местных органов исполнительной власти. Взаимоотношения местных представительных и исполнительных органов...
30441. Юридическая и социально-политическая сущность конституции 15.07 KB
  Юридическая и социальнополитическая сущность конституции В науке конституционного права понятие “конституция†применяется в двух смыслах. В формальном смысле это юридическая конституция т. Юридическая конституция представляет собой документ предписывающий то что должно быть. Серьезные расхождения между юридической и фактической конституциями иногда порождают фиктивность части положений основного закона.
30442. Основные тенденции развития конституционного права 14.29 KB
  Социализация это тенденция означающая что конституционноправовые нормы все шире регулируют основы устройства не только государства как это делали первые конституции но и общества в целом включая его экономическую политическую1 социальную и культурную системы. Данная тенденция проявляется в пополнении перечня конституционных прав свобод и обязанностей правами и обязанностями социальноэкономическими и культурными в регулировании отношений между трудом и капиталом в установлении социального предназначения собственности и т....
30443. Права, свободы и обязанности человека и гражданина, соотношение между ними 14.85 KB
  Права свободы и обязанности человека и гражданина соотношение между ними Подчеркивая две составные части в формуле права человека и права гражданина конституционноправовая теория исходит из того что первые проистекают из естественного права а вторые из позитивного хотя и те и другие носят неотъемлемый характер. Права человека являются исходными они присущи всем людям от рождения независимо от того являются они гражданами государства в котором живут или нет а права гражданина включают в себя те права которые закрепляются...
30444. Равенство прав, свобод и обязанностей, запрет дискриминации в зарубежных странах 16.24 KB
  Равенству граждан противостоит дискриминация являющаяся формой насилия над человеком. Дискриминация выступает как отрицание равенства граждан и основных принципов демократического правового государства. В прошлом в ряде стран дискриминация возводилась на уровень государственной политики. Расовая дискриминация.