- •Конструктор копирования (KK) может вызываться явно, а также при определении объекта в сочетании
- •Переопределение операций внутри класса
- •если формальный параметр или результат переда-ются
- •приведение типа - особенность операции – отсутствие
- •Переопределение операции () позволяет использовать
- •Переопределение операций распределения памяти class memory{
- •void free(void *q0) {
- •Классы стандартных потоков ввода-вывода
- •Перегрузка функций
- •Функции void Func(int); int Func(int);
- •Для того чтобы объекты, в состав которых входят
- •выделить в памяти место под объект создать «пустой»
- •Основная сущность полиморфизма - в возможности
- •При переходе от объекта производного класса к внут-
- •class A {
- •Внешний полиморфизм – ср-во объединения классов
- •Внутренний полиморфизм как элемент «отложенного»
- •примеры «отложенного» программирования:
- •Простые алгоритмы – взять составные части и
Внутренний полиморфизм как элемент «отложенного»
программирования Следующ вариант полиморфизма – внутреннее прог-
раммирование базового и производного класса, т.е. вызова полиморфного метода в программном коде ба- зового класса. Пусть в базовом классе def виртуаль-ная ф- я G. Тогда в программном коде базового класса ее вызов G() по «короткому» имени в неявном виде происходит через указатель на объект этого класса, т.е. this->G() - необх, условие полиморфного вызова в С++. Если же объект базового класса является частью объекта производного класса, в котором будет пере-определен одноименный метод, то вызов этого метода должен произойти в производном классе - «отложен-ное» программирование класса A в классе B.
«Отложенное» программирование действительно имеет дело не только с разным временем написания кода, но и с разным временем его трансляции. К моменту реализации производного программный код базового класса может присутствовать в проекте во внутреннем представлении (в виде объектного модуля).
примеры «отложенного» программирования:
· нейтрализация ошибок, происходящих при вы- полнении кода базового класса. Эл-т отложен-ного программирования - принятие решения о спо-собе обработки возникшей ошибки: игнорирова-ние, завершение программы, исправл данных и т.п.
· доп условия, касающиеся возможности выполнения заданных действий в базовом классе. Производный класс сообщает базовому классу в наследуемом по-лиморфном методе о возможн выпол указан действ; · обработка событий в производном классе, кот. «от-
лавливаются» внутренними мех-мами базового клас-са - основа для реализации в С++ библиотек классов приложений, построенных на принципах событийного программирования (оконных и т.д). Программист соз-дает собственное оконное приложение разрабаты-вает производный класс от баз класса окна. При этом в баз классе имеются внутренние мех-мы, «отлавли-вающ» и обрабатыв все события, кот. касаются этого приложения. При их появлении баз класс вызывает соотв полиморфные методы в производном классе программир производн класса-написание набора обработчиков событ в контексте
производного класса.
Простые алгоритмы – взять составные части и
выстроить их в нужной последовательности. Составные части таких алгоритмов разнородны, а процесс их выполнения можно отследить «исторически». Однако есть и другие подходы
проектированию, кроме образной очевидности:
алгоритмы, последовательно приближающиеся к заданной цели;алгоритмы, в которых поиск решения сводится к
формулировке одной или нескольких задач меньшей
размерности;
алгоритмы, соблюдающие установленные для них
соотношения (свойства, «законы», инварианты);
Соответственно, меняется и технология их
разработки: правильно свести задачу к аналогичной.
Очевидность и наблюдаемость логическая
непротиворечивость и доказательность соблюдения программой заданных свойств.