polevoy_cpp_2012_spring_lecture_09
.pdfДинамический полиморфизм
•реализуется через механизмы виртуальных функции и наследования
•имя функции сопоставляется с кодом функции на этапе выполнения
07.04.2012 |
cppNewb.ru |
31 |
Полиморфизм
•помогает создавать расширяемые программы
•увеличивает возможности повторного использования кода и упрощает сопровождение
•механизм реализации и использования абстракций
07.04.2012 |
cppNewb.ru |
32 |
Интерфейсный класс
•содержит только объявления функций
•не содержит данных
•не содержит определений объявленных функций
•все функции д.б. чисто виртуальными
07.04.2012 |
cppNewb.ru |
33 |
Наследование интерфейса в С++
•реализуется через наследование от интерфейсного (абстрактного) класса
•наиболее разумный случай
использования множественного наследования
07.04.2012 |
cppNewb.ru |
34 |
Ассоциативность операторов
•правоассоциативные
–присваивания
–унарные операторы
•левоассоциативные
пример:
a = b = c означает a = (b = c)
a + b + c означает (a + b) + c
07.04.2012 |
cppNewb.ru |
35 |
Порядок вычислений
•порядок вычислений подвыражений не определен
пример:
c = f(a) + g(b); //< порядок произвольный
int i(1);
v[i] = i++; //< v[1] = 1 или v[1] = 2 или …
07.04.2012 |
cppNewb.ru |
36 |
Не могут быть переопределены
•?:
–тернарный условный оператор
•sizeof
–оператор вычисления размера типа
•typeid
–оператор получения информации о типе
07.04.2012 |
cppNewb.ru |
37 |
Не могут быть переопределены операторы доступа
•::
–оператор разрешения области видимости
•.
–оператор выбора члена
•.*
–оператор выбора члена через указатель на член
07.04.2012 |
cppNewb.ru |
38 |
Причины ограничения перегрузки
•правым операндом является не значение, а имя
•основные средства доступа к членам
07.04.2012 |
cppNewb.ru |
39 |
Рекомендуемые типы
•bool
•char
•int
•double
07.04.2012 |
cppNewb.ru |
40 |