Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

билеты

.doc
Скачиваний:
11
Добавлен:
27.05.2013
Размер:
154.11 Кб
Скачать

33. Перегрузка операций. Переопределение операций осуществляется в рамках стандартного синтаксиса языка С++, т.е. обозначение операций и количество операндов остается неизменным. Следует отметить, что для каждой комбинации типов операндов в переопределенной операции необходимо ввести отдельную функцию. Иными словами транслятор не может производить перестановку операндов местами даже в том случае, даже если базовая операция допускает это. Для переопределения операции используется особая форма функции-элемента класса с заголовком: operator операция (список параметров-операндов). Результат функции является одновременно результатом переопределенной функции. Имеется два способа описания функции, соответствующей переопределенной операции. 1 – если функция задается как обычная функция-элемент класса, то первым операндом является объект класса, указатель на который передается неявным параметром this. 2 – если первый операнд переопределяемой операции не является объектом класса, то соответствующая функция должна быть определена как дружественная классу с полным списком аргументов.

34. Производные классы. Наследование. Наследование – это способ создания иерархии классов, когда любой класс автоматически включает в себя все свойства старого класса, а затем развивает их. С абстрактной точки зрения старый класс определяет только общие свойства, а новый конкретизирует более частые свойства. Сохранение в новом классе свойств старого называется наследованием. Принцип наследования состоит в том, что элементы данных старого класса автоматически становятся элементами данных нового класса, а все функции-элементы старого класса, применимы к объекту нового класса. Основные свойства базовых и производных классов: 1 – объект базового класса определяется в производном классе как неименованный, это означает, что он не может быть использован в явном виде как обычный элемент данных; 2 – элементы данных базового класса включаются в объект производного класса, при этом транслятор как правило размещает их в начале объекта производного класса. Однако личная часть базового класса закрыта для прямого использования в производном классе. 3 – Функции-элементы базового класса наследуются в производном классе, т.е. вызов функции, определяемой в БК возможен для объекта производного класса и понимается как вызов ее для входящего в него объекта БК. 4 – В ПК можно переопределить(перегрузить наследованную функцию), которая будет вызываться вместо нее, при этом для выполнения соответствующих действий над объектом БК, она может включать явный вызов переопределенной функции по полному имени.

35. Понятие и синтаксис множественного наследования. Класс может порождаться более чем одним классом, такое явление называют множественным наследованием. Множественное наследование означает, что производный класс наследует элементы нескольких базовых классов. class ПК : БК_1, БК_2, …, БК_n { определение личной и общей частей производного класса}.

36. Полиморфизм. Виртуальные функции. Полиморфизм – это свойство функции, определенной множеством производных классов, построенных на основе БК. В каждом из классов функция может быть переопределена или унаследована из БК. Свойство полиморфности заключается в том, что при отсутствии полной информации о том к какому из классов относится объект функция в состоянии идентифицировать его класс и корректно выполнить в этом классе. Важнейшее свойство полиморфности заключается в возможности организовать регулярный процесс обработки объектов группы производных классов. В С++ полиморфная функция называется виртуальной. Виртуальная функция – это функция определенная в БК и переопределенная в группе производных классов. При вызове виртуальной функции по указанию на объект БК, производится вызов функции, определенной для окружающего его объекта ПК. Виртуальная функция при реализации в классе имеет ключевое слово virtual void x(). Принцип реализации механизма виртуальной функции заключается в том, что объект БК должен содержать в себе информацию о преобразовании указателя на базовый класс в указатель на ПК. Таким образом осуществляется расчет указателя при использовании требуемой функции.