Ббк 32. 973-018 г рецензент канд физ мат наук, Ф. А. Мурзин
friend complex operator+(complex, complex)
Download 278.16 Kb.
|
FIT-Gor-PP3
Пример 53. Перегрузка арифметических операций для их использования в выражениях над комплексными числами Члены класса создаются в порядке их описания, а уничтожаются они в обратном порядке. Член класса может быть частным (private), защищенным (protected) или общим (public).
Пример 54. Интерпретация этих операций задана определениями функций с именами operator+ и operator* Если b и c имеют тип complex, то b+c означает (по определению) operator+(b,c). Сохраняются обычные приоритеты операций, поэтому второе выражение выполняется как b=b+(c*a), а не как b=(b+c)*a. При перегрузке операций нельзя изменить их приоритеты, равно как и синтаксические правила для выражений. Для операций преобразования ТД выбран подход, при котором проверка соответствия ТД является строго восходящим процессом, когда в каждый момент рассматривается только одна операция с операндами, типы которых уже прошли проверку. Вызов функции, т. е. конструкцию выражение(список выражений), можно рассматривать как бинарную операцию, в которой выражение является левым операндом, а список выражений – правым. Операцию вызова можно перегружать, как и другие операции. Одним из самых полезных видов классов является контейнерный класс, т. е. такой класс, который хранит объекты каких-то других типов. Списки, массивы, ассоциативные массивы и множества – все это контейнерные классы.
Пример 55. Шаблон типа для класса. Стек, содержащий элементы произвольного типа Префикс template Область видимости T продолжается до конца описания, начавшегося префиксом template Имя шаблонного класса, за которым следует тип, заключенный в угловые скобки <>, является именем класса (определяемым шаблоном типа), и его можно использовать как все имена класса. Поскольку все функции-члены класса stack являются подстановками, то и в этом примере транслятор создает вызовы функций только для размещения в свободной памяти и освобождения. Функции в шаблоне типа могут и не быть подстановками. В программе может быть только одно определение функции-члена класса и только одно определение шаблона типа для функции-члена шаблонного класса. Если требуется определение функции-члена шаблонного класса для конкретного типа, то задача системы программирования найти шаблон типа для этой функции-члена и создать нужную версию функции. В общем случае система программирования может рассчитывать на указания от программиста, которые помогут найти нужный шаблон типа. Возможна передача операций как параметров функций. Рассмотренные средства представления иерархии классов объектов с возможностью множественного наследования, использования программируемых и встроенных конструкторов и деструкторов объектов, создания массивов объектов класса с контролем доступа к элементам, перегрузки операций и задания виртуальных функций, а также, операций преобразования ТД и шаблонов типа для обработки контейнерных структур данных суммарно образуют достаточно богатый арсенал для поддержки процесса практичной разработки программ при решении расширяющейся задачи, совмещѐнного с процессом декомпозиции программы на многократно используемые компоненты разного уровня абстрагирования от конкретики решаемой задачи и специфики системных реализационных решений. При организации наследования в отличие от обобщенных функций работает модель обмена сообщениями: объекты обладают свойствами; посылают сообщения; наследуют свойства и методы от предков. При переходе от обычного стандартного программирования с ООП связывают радикальное изменение способа организации программ. Это изменение произошло под давлением роста мощности оборудования. ООП взламывает традиционное программирование по многим направлениям. Вместо создания отдельной программы, оперирующей массой данных, приходится разбираться с данными, которые сами обладают поведением, а программа сводится к простому взаимодействию данных новой категории – объектов. Download 278.16 Kb. Do'stlaringiz bilan baham: |
ma'muriyatiga murojaat qiling