русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Уровни доступа. Использование дружественных классов.


Дата добавления: 2015-07-09; просмотров: 1386; Нарушение авторских прав


Ключи доступа

При описании класса в его заголовке перечисляются все классы, являющиеся для него базовыми. Возможность обращения к элементам этих классов регулиру­ется с помощью ключей доступа private, protected и public:

class имя : [private | protected | public] баэовый_класс { тело класса };

Если базовых классов несколько, они перечисляются через запятую. Ключ досту­па может стоять перед каждым классом, например:

class А { ... }; class В { ... }: class С { ... };

class D: A, protected В. public С { ... };

По умолчанию для классов используется ключ доступа private, а для структур — public.

До сих пор мы рассматривали только применяемые к элементам класса специфи­каторы доступа private и public. Для любого элемента класса может также ис­пользоваться спецификатор protected, который для одиночных классов, не вхо­дящих в иерархию, равносилен private. Разница между ними проявляется при наследовании, что можно видеть из приведенной таблицы:

 

Ключ доступа Спецификатор а базовом классе Доступ в производном классе
private private нет
  protected private
  public private
protected private нет
  protected protected
  public protected
public private нет
  protected protected
  public public

Как видно из таблицы, private элементы базового класса в производном классе недоступны вне зависимости от ключа. Обращение к ним может осуществляться только через методы базового класса.

Элементы protected при наследовании с ключом private становятся в производ­ном классе private, в остальных случаях права доступа к ним не изменяются.

Доступ к элементам public при наследовании становится соответствующим клю­чу доступа.



Если базовый класс наследуется с ключом private, можно выборочно сделать некоторые его элементы доступными в производном классе, объявив их в сек­ции public производного класса с помощью операции доступа к области види­мости:

class Base{

public: void f(): class Derived : private Base{

public: Base::void f():

}:

Дружественные функции и классы

Иногда желательно иметь непосредственный доступ извне к скрытым полям класса, то есть pacширить интерфейс класса. Для этого служат дружественные функции и дружественные классы.

 

Дружественная функция

Дружественные функции применяются для доступа к скрытым нолям класса и представляют собой альтернативу методам. Метод, как правило, используется для реализации свойств объекта, а в виде дружественных функций оформляются действия, не представляющие свойства класса, но концептуально входящие в его интерфейс и нуждающиеся в доступе к его скрытым полям, например, переопре­деленные операции вывода объектов.

Ниже перечислены правила описания и особенности дружественных функций.

□ Дружественная функция объявляется внутри класса, к элементам которого ей нужен доступ, с ключевым словом friend. В качестве параметра ей должен передаваться объект или ссылка на объект класса, поскольку указатель this ей не передается.

□ Дружественная функция может быть обычной функцией или методом друго­го ранее определенного класса. На нее не распространяется действие специ­фикаторов доступа, место размещения ее объявления в классе безразлично.

□ Одна функция может быть дружественной сразу нескольким классами.

 

Дружественный класс

Если все методы какого-либо класса должны иметь доступ к скрытым полям другого, весь класс объявляется дружественным с помощью ключевого слова friend. В приведенном ниже примере класс mistress объявляется дружественным классу hero:

class hero{

 

friend class mistress;

}

class mistress{

void fl(): void f2();

}

Объявление friend не является спецификатором доступа и не наследуется.

 

 



<== предыдущая лекция | следующая лекция ==>
Конструкторы и деструкторы, их вызов. | Перегрузка операций.


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 3.547 сек.