Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
assistance.doc
Скачиваний:
4
Добавлен:
25.09.2019
Размер:
90.62 Кб
Скачать

19 Вопрос.

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

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

Такая функция может быть описана в любой части класса, так как не принадлежит этому классу.

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

Функция может быть дружественной по отношению к нескольким классам. Для этого ее необходимо объявить в каждом классе.

20 Вопрос.

Дружественные функции по отношению к нескольким классам. Дружественные классы.

Функция может быть дружественной по отношению к нескольким классам. Для этого ее необходимо объявить в каждом классе.

Дружественная функция одного класса может быть элементом другого класса.

Класс может быть дружественным для другого класса. В этом случае его методы будут дружественные для этого класса.

21 Вопрос.

Полиморфизм. Статический полиморфизм.

Полиморфизм – свойство, позволяющее одинаково называть объекты, но реализовывать их по-разному.

В С++ полиморфизм основан на связывании идентификаторов методов с физическими адресами. Такое связывание может осуществляться 2-мя способами:

1). На этапе компиляции текста – механизм раннего связывания;

2). Во время выполнения программы – механизм позднего связывания.

Статический полиморфизм – это полиморфизм механизма раннего связывания.

Работа с объектами чаще всего происходит через указатели. Указатели на производные и базовые классы связаны особым отношением. Как правило, указатель не может ссылаться на объект другого типа, однако, указатель на базовый класс можно использовать.

Следует иметь в виду, что указатель на базовый класс можно использовать для доступа только к тем элементам, которые были наследованы.

22 Вопрос.

Динамический полиморфизм. Виртуальные функции.

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

Виртуальная функция – метод класса, который определяется в базовом классе с использованием ключевого слова virtual и переопределяется в одном или нескольких производных классов.

Класс, который имеет хотя бы одну виртуальную функцию, называется полиморфным.

Правила работы с виртуальными функциями:

1). Виртуальная функция определяется в базовом классе и переопределяется в производных классах(автоматически становится виртуальной в производном классе);

2). Прототипы виртуальной функции и ее переопределение должны в точности совпадать;

3). Виртуальная функция должна быть методом класса, а не ее другом, но может быть другом для другого класса;

4). Если переопределить в производном классе, то объекты производного класса могут получить доступ к виртуальной функции базового класса;

5). Конструкторы не могут быть виртуальными;

6). Деструкторы могут быть виртуальными.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]