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

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


Предлагаем ознакомиться с содержанием и скачать для редактирования или печати презентацию «Дружественные классы и функции», содержащую 10 слайдов и доступную в формате ppt. Размер файла доклада составляет 66.89 KB

Просмотреть и скачать

Слайды и текст этого доклада

Дружественные классы и функции
Рис.1 Дружественные классы и функции
Дружественные функции Дружественные функции – это функции, объявленные вне класса, но имеющие доступ
Рис.2 Дружественные функции Дружественные функции – это функции, объявленные вне класса, но имеющие доступ к закрытым и защищенным полям данного класса. Дружественная функция объявляется внутри класса с модификатором friend. Дружественные функции не являются членами класса, поэтому им не передается указатель this.
Правила описания и особенности дружественных функций: 1) Дружественная функция объявляется внутри кл
Рис.3 Правила описания и особенности дружественных функций: 1) Дружественная функция объявляется внутри класса, к элементам которого ей нужен доступ, с ключевым словом friend. 2) В качестве параметра ей должен передаваться объект или ссылка на объект класса, поскольку указатель this данной функции не передается. 3) дружественная функция может быть обычной функцией или методом другого ранее определенного класса. 4) На дружественную функцию не распространяется действие спецификатора доступа, место размещения ее объявления в классе безразлично. 5) Одна функция может быть дружественной сразу несколькими классами. 6) Дружественная функция не наследуется.
Пример
Рис.4 Пример
Дружественные операции Дружественные операции, как и дружественные функции, могут иметь доступ к зак
Рис.5 Дружественные операции Дружественные операции, как и дружественные функции, могут иметь доступ к закрытым и защищенным методам класса.
Дружественные классы Некоторым классам может понадобиться доступ к закрытым данным друг друга Наприм
Рис.6 Дружественные классы Некоторым классам может понадобиться доступ к закрытым данным друг друга Например, классу «дерево» может понадобиться доступ к закрытым полям его узлов В этом случае необходимо объявить дружественный класс внутри определения класса Дружественная связь между классами является самой сильной Реализации классов оказываются связанными, что противоречит принципу инкапсуляции Не используйте дружественные классы до тех пор, пока их использование не окажется единственным способом решения задачи
Пример
Рис.7 Пример
Вложенные классы
Рис.8 Вложенные классы
Вложенное объявление классов и других типов данных Язык C++ позволяет разместить объявление одного к
Рис.9 Вложенное объявление классов и других типов данных Язык C++ позволяет разместить объявление одного класса (или другого типа данных) внутри объявления другого Это полезно, когда вложенный тип данных в основном используется лишь внешним классом, или совместно с ним Пример - итераторы стандартных контейнеров STL Использование вложенного класса Из методов внешнего класса – по имени вложенного класса Снаружи – при помощи указания имени внешнего класса: ExternalClass::Internal
Пример 1
Рис.10 Пример 1


Скачать презентацию