🗊Презентация Перегрузка операций

Нажмите для полного просмотра!
Перегрузка операций, слайд №1Перегрузка операций, слайд №2Перегрузка операций, слайд №3Перегрузка операций, слайд №4Перегрузка операций, слайд №5Перегрузка операций, слайд №6Перегрузка операций, слайд №7Перегрузка операций, слайд №8Перегрузка операций, слайд №9Перегрузка операций, слайд №10Перегрузка операций, слайд №11Перегрузка операций, слайд №12Перегрузка операций, слайд №13Перегрузка операций, слайд №14Перегрузка операций, слайд №15Перегрузка операций, слайд №16Перегрузка операций, слайд №17Перегрузка операций, слайд №18Перегрузка операций, слайд №19Перегрузка операций, слайд №20Перегрузка операций, слайд №21Перегрузка операций, слайд №22Перегрузка операций, слайд №23Перегрузка операций, слайд №24Перегрузка операций, слайд №25Перегрузка операций, слайд №26Перегрузка операций, слайд №27Перегрузка операций, слайд №28Перегрузка операций, слайд №29Перегрузка операций, слайд №30Перегрузка операций, слайд №31Перегрузка операций, слайд №32Перегрузка операций, слайд №33Перегрузка операций, слайд №34Перегрузка операций, слайд №35Перегрузка операций, слайд №36Перегрузка операций, слайд №37Перегрузка операций, слайд №38Перегрузка операций, слайд №39

Содержание

Вы можете ознакомиться и скачать презентацию на тему Перегрузка операций. Доклад-сообщение содержит 39 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1





Тема 12 
Перегрузка операций
Описание слайда:
Тема 12 Перегрузка операций

Слайд 2





Что такое операция?
Каждая операция реализована как вызов функции, так что
a = b+c
эквивалентно
operator = (a, operator + (b, c))
Другой способ задания операции: если а – объект некоторого класса, то
a + b
эквивалентно
a.operator +(b);
Описание слайда:
Что такое операция? Каждая операция реализована как вызов функции, так что a = b+c эквивалентно operator = (a, operator + (b, c)) Другой способ задания операции: если а – объект некоторого класса, то a + b эквивалентно a.operator +(b);

Слайд 3





Пример перегрузки операций
a << 2;
если а принадлежит одному из целочисленных типов, то это – операция побитового сдвига влево (результат – a*4, значение a не меняется;
если а – выходной поток, в этот поток помещается десятичное представление числа 2 (или представление, соответствующее текущему состоянию потока). Поток a изменяется.
Описание слайда:
Пример перегрузки операций a << 2; если а принадлежит одному из целочисленных типов, то это – операция побитового сдвига влево (результат – a*4, значение a не меняется; если а – выходной поток, в этот поток помещается десятичное представление числа 2 (или представление, соответствующее текущему состоянию потока). Поток a изменяется.

Слайд 4





Ограничения на перегрузку операций
обозначения собственных операций вводить нельзя;
перегрузка операций для стандартных типов не допускается;
операции «.», «.*», «?:», «#», «##», «::», «sizeof» не могут быть перегружены;
при перегрузке операций должно сохраняться число аргументов и приоритеты, принятые для стандартных типов;
при перегрузке операций нельзя задавать аргументы по умолчанию.
Описание слайда:
Ограничения на перегрузку операций обозначения собственных операций вводить нельзя; перегрузка операций для стандартных типов не допускается; операции «.», «.*», «?:», «#», «##», «::», «sizeof» не могут быть перегружены; при перегрузке операций должно сохраняться число аргументов и приоритеты, принятые для стандартных типов; при перегрузке операций нельзя задавать аргументы по умолчанию.

Слайд 5





Реализация перегрузки операций при написании классов
Функция-операция может быть определена как: 
метод класса
дружественная функция класса 
обычная функция.
Описание слайда:
Реализация перегрузки операций при написании классов Функция-операция может быть определена как: метод класса дружественная функция класса обычная функция.

Слайд 6





Операции над классом Point2D
Сложение и вычитание точек (по правилам сложения и вычитания векторов);
Унарный минус (по правилам векторов)
Умножение точки на число и числа на точку (результат – растяжение  или сжатие точки);
Умножение двух точек (результат – скалярное произведение);
Инкремент и декремент точки (результат – увеличение или уменьшение координат на 1);
Сравнение на равенство и неравенство двух точек.
Описание слайда:
Операции над классом Point2D Сложение и вычитание точек (по правилам сложения и вычитания векторов); Унарный минус (по правилам векторов) Умножение точки на число и числа на точку (результат – растяжение или сжатие точки); Умножение двух точек (результат – скалярное произведение); Инкремент и декремент точки (результат – увеличение или уменьшение координат на 1); Сравнение на равенство и неравенство двух точек.

Слайд 7





Реализация унарных операций
Если унарная операция определяется как метод класса, она описывается без параметров (параметром считается вызвавший ее объект), в противном случае параметром такой функции должна быть ссылка на объект класса (если операнд изменяется) или константная ссылка (в противном случае).
Функция должна возвращать ссылку на объект класса, если результат должен быть L-value. В противном случае результат зависит от сути функции.
Описание слайда:
Реализация унарных операций Если унарная операция определяется как метод класса, она описывается без параметров (параметром считается вызвавший ее объект), в противном случае параметром такой функции должна быть ссылка на объект класса (если операнд изменяется) или константная ссылка (в противном случае). Функция должна возвращать ссылку на объект класса, если результат должен быть L-value. В противном случае результат зависит от сути функции.

Слайд 8





Примеры реализации унарных операций для класса Point2D
Унарный минус:
Описание слайда:
Примеры реализации унарных операций для класса Point2D Унарный минус:

Слайд 9





Примеры реализации унарных операций для класса Point2D
Инкремент  (префиксный) :
Отметим, что операция префиксного инкремента возвращает Lvalue, и что возвращается новое значение
Описание слайда:
Примеры реализации унарных операций для класса Point2D Инкремент (префиксный) : Отметим, что операция префиксного инкремента возвращает Lvalue, и что возвращается новое значение

Слайд 10





Примеры реализации унарных операций для класса Point2D
Инкремент  (постфиксный) :
Отметим, что операция постфиксного инкремента возвращает не-Lvalue, и что возвращается старое значение. Кроме того, добавляется фиктивный параметр для указания типа операции.
Описание слайда:
Примеры реализации унарных операций для класса Point2D Инкремент (постфиксный) : Отметим, что операция постфиксного инкремента возвращает не-Lvalue, и что возвращается старое значение. Кроме того, добавляется фиктивный параметр для указания типа операции.

Слайд 11





Реализация бинарных операций
Если бинарная операция определяется как метод класса, она описывается с одним параметром, соответствующим второму операнду. Первым операндом считается вызвавший ее объект. В противном случае такая функция должна иметь два параметра, соответствующих операндам операции.
Функция должна возвращать ссылку на объект класса, если результат должен быть L-value. В противном случае результат зависит от сути функции.
Описание слайда:
Реализация бинарных операций Если бинарная операция определяется как метод класса, она описывается с одним параметром, соответствующим второму операнду. Первым операндом считается вызвавший ее объект. В противном случае такая функция должна иметь два параметра, соответствующих операндам операции. Функция должна возвращать ссылку на объект класса, если результат должен быть L-value. В противном случае результат зависит от сути функции.

Слайд 12





Примеры реализации бинарных операций для класса Point2D
Сложение:
Описание слайда:
Примеры реализации бинарных операций для класса Point2D Сложение:

Слайд 13





Примеры реализации бинарных операций для класса Point2D
Скалярное произведение:
Описание слайда:
Примеры реализации бинарных операций для класса Point2D Скалярное произведение:

Слайд 14





Примеры реализации бинарных операций для класса Point2D
С равнение :
Описание слайда:
Примеры реализации бинарных операций для класса Point2D С равнение :

Слайд 15





Примеры реализации бинарных операций для класса Point2D
Умножение на число :
Описание слайда:
Примеры реализации бинарных операций для класса Point2D Умножение на число :

Слайд 16





Примеры реализации бинарных операций для класса Point2D
Вывод в поток:
Описание слайда:
Примеры реализации бинарных операций для класса Point2D Вывод в поток:

Слайд 17





Перегрузка операции присваивания
Для вновь создаваемых классов создаётся перегруженная операция присваивания по умолчанию. Эта операция копирует все поля объекта из правой части в соответствующие поля объекта из левой части.
Если этого достаточно, то собственную реализацию этой операции можно не писать!
Для класса Point2D достаточно работы стандартной операции присваивания. Для класса Person необходимо писать собственную реализацию, т.к. он захватывает ресурсы во время своего существования.
Описание слайда:
Перегрузка операции присваивания Для вновь создаваемых классов создаётся перегруженная операция присваивания по умолчанию. Эта операция копирует все поля объекта из правой части в соответствующие поля объекта из левой части. Если этого достаточно, то собственную реализацию этой операции можно не писать! Для класса Point2D достаточно работы стандартной операции присваивания. Для класса Person необходимо писать собственную реализацию, т.к. он захватывает ресурсы во время своего существования.

Слайд 18





Схемы работы перегруженной операции присваивания a = b
проверка на самоприсваивание;
освобождение ресурсов, полученных объектом a;
получение ресурсов, закрепленных за объектом b (в случае, если ресурсом является динамическая память – клонирование)
Описание слайда:
Схемы работы перегруженной операции присваивания a = b проверка на самоприсваивание; освобождение ресурсов, полученных объектом a; получение ресурсов, закрепленных за объектом b (в случае, если ресурсом является динамическая память – клонирование)

Слайд 19





Реализация операции присваивания для класса Person
Описание слайда:
Реализация операции присваивания для класса Person

Слайд 20





Методы Clone и Erase
Для эффективной реализации работы с ресурсами можно написать два защищённых метода:
метод, освобождающий все занятые объектом ресурсы (Erase);
метод, клонирующий ресурсы другого объекта (Clone)
Описание слайда:
Методы Clone и Erase Для эффективной реализации работы с ресурсами можно написать два защищённых метода: метод, освобождающий все занятые объектом ресурсы (Erase); метод, клонирующий ресурсы другого объекта (Clone)

Слайд 21





Реализация и использование методов Clone и Erase
Описание слайда:
Реализация и использование методов Clone и Erase

Слайд 22





Перегрузка операции приведения типа
Запись: operator тип() 
Нет возвращаемого значения
Описание слайда:
Перегрузка операции приведения типа Запись: operator тип() Нет возвращаемого значения

Слайд 23





Перегрузка операции приведения типа
После написания этого кода возникают сложности с использованием других перегруженных операций:
Описание слайда:
Перегрузка операции приведения типа После написания этого кода возникают сложности с использованием других перегруженных операций:

Слайд 24





Перегрузка оператора вызова функции
Запись: тип_возврата operator() (формальные параметры);
Класс, в котором определён хотя бы один оператор вызова функции, называется функциональным классом. Функциональный класс может не иметь других полей и методов.
Функциональные классы используются в алгоритмах из библиотеки STL.
Описание слайда:
Перегрузка оператора вызова функции Запись: тип_возврата operator() (формальные параметры); Класс, в котором определён хотя бы один оператор вызова функции, называется функциональным классом. Функциональный класс может не иметь других полей и методов. Функциональные классы используются в алгоритмах из библиотеки STL.

Слайд 25





Пример работы с функциональным классом
Описание слайда:
Пример работы с функциональным классом

Слайд 26





Что такое очередь?
Очередью называется структура данных, содержащая последовательность однотипных элементов и позволяющая эффективно выполнять следующие операции:
вставка нового элемента в хвост очереди;
просмотр элемента, находящегося в голове очереди;
удаление из очереди элемента, находящегося в голове;
определение количества элементов в очереди (или определение того, пуста ли очередь)
Описание слайда:
Что такое очередь? Очередью называется структура данных, содержащая последовательность однотипных элементов и позволяющая эффективно выполнять следующие операции: вставка нового элемента в хвост очереди; просмотр элемента, находящегося в голове очереди; удаление из очереди элемента, находящегося в голове; определение количества элементов в очереди (или определение того, пуста ли очередь)

Слайд 27





Что такое очередь?
Над очередью иногда можно выполнить дополнительные операции:
доступ к элементу очереди по его номеру (элемент, находящийся в голове очереди, имеет номер 0);
выполнение однотипных действий над всеми элементами очереди
Описание слайда:
Что такое очередь? Над очередью иногда можно выполнить дополнительные операции: доступ к элементу очереди по его номеру (элемент, находящийся в голове очереди, имеет номер 0); выполнение однотипных действий над всеми элементами очереди

Слайд 28





Реализация очереди
Существует несколько способов реализации очереди. Основные способы:
на массивах (циклическая очередь);
на линейных списках
Рассмотрим второй способ реализации очереди.
Описание слайда:
Реализация очереди Существует несколько способов реализации очереди. Основные способы: на массивах (циклическая очередь); на линейных списках Рассмотрим второй способ реализации очереди.

Слайд 29





Описание очереди  (файл queue.h)
Часть 1 (предварительные описания)
Описание слайда:
Описание очереди (файл queue.h) Часть 1 (предварительные описания)

Слайд 30





Описание очереди  (файл queue.h)
Часть 2 (защищённые поля и методы)
Описание слайда:
Описание очереди (файл queue.h) Часть 2 (защищённые поля и методы)

Слайд 31





Описание очереди  (файл queue.h)
Часть 3 (публичные методы)
Описание слайда:
Описание очереди (файл queue.h) Часть 3 (публичные методы)

Слайд 32





Реализация очереди (файл queue.cpp)
Часть 1 (защищённые методы)
Описание слайда:
Реализация очереди (файл queue.cpp) Часть 1 (защищённые методы)

Слайд 33





Реализация очереди (файл queue.cpp)
Часть 2 (конструктор копирования, деструктор, оператор присваивания)
Описание слайда:
Реализация очереди (файл queue.cpp) Часть 2 (конструктор копирования, деструктор, оператор присваивания)

Слайд 34





Реализация очереди (файл queue.cpp)
Часть 3 (метод Push)
Описание слайда:
Реализация очереди (файл queue.cpp) Часть 3 (метод Push)

Слайд 35





Реализация очереди (файл queue.cpp)
Часть 4 (метод Pop)
Описание слайда:
Реализация очереди (файл queue.cpp) Часть 4 (метод Pop)

Слайд 36





Реализация очереди (файл queue.cpp)
Часть 4 (методы GetFirst и IsEmpty)
Описание слайда:
Реализация очереди (файл queue.cpp) Часть 4 (методы GetFirst и IsEmpty)

Слайд 37





Реализация очереди (файл queue.cpp)
Часть 4 (методы GetSize и operator [])
Описание слайда:
Реализация очереди (файл queue.cpp) Часть 4 (методы GetSize и operator [])

Слайд 38





Реализация очереди (файл queue.cpp)
Часть 4 (другой вариант перегрузки [])
Описание слайда:
Реализация очереди (файл queue.cpp) Часть 4 (другой вариант перегрузки [])

Слайд 39





Реализация очереди (файл queue.cpp)
Часть 5 (перегруженный метод Browse)
Описание слайда:
Реализация очереди (файл queue.cpp) Часть 5 (перегруженный метод Browse)



Похожие презентации
Mypresentation.ru
Загрузить презентацию