Презентация - Перегрузка операторов. Перегрузка операторов внутри классов . Глобальные переменные

Нужно больше вариантов? Смотреть похожие
Нажмите для полного просмотра
Перегрузка операторов. Перегрузка операторов внутри классов . Глобальные переменные
Распечатать
  • Уникальность: 84%
  • Слайдов: 32
  • Просмотров: 1891
  • Скачиваний: 763
  • Размер: 4.07 MB
  • Онлайн: Да
  • Формат: ppt / pptx
В закладки
Оцени!
  Помогли? Поделись!

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

Слайд 1

Перегрузка операторов. Перегрузка операторов внутри классов . Глобальные переменные, слайд 1
Программирование Лекция 6. Перегрузка операторов. Перегрузка операторов внутри классов . Глобальные переменные. Статические переменные и функции. Ключевое слово friend

Слайд 2

Перегрузка операторов. Перегрузка операторов внутри классов . Глобальные переменные, слайд 2
Перегрузка операторов Перегрузка операторов позволяет определять поведение встроенных операторов для объектов пользовательских классов. Какие операторы есть в С ?

Слайд 3

Перегрузка операторов. Перегрузка операторов внутри классов . Глобальные переменные, слайд 3
Основные операторы Принимают 1 аргумент int a -10; int b a; // a -9; b -9; b a ; // a -8; b -9; a 10; // a a 10; Операторы для целых чисел, к-рые работают с ними, как с битыми строками. 010101 101010 Побитовые сдвиги: 010101 2 000101; 010101

Слайд 4

Перегрузка операторов. Перегрузка операторов внутри классов . Глобальные переменные, слайд 4
Поразрядные логические операции C И , обозначение: & исключающее ИЛИ , обозначение: исключающее ИЛИ , обозначение: X Y F 0 0 0 0 1 0 1 0 0 1 1 1 & X Y F 0 0 0 0 1 1 1 0 1 1 1 0 X Y F 0 0 0 0 1 1 1 0 1 1 1 1 0, если хотя бы один из битов 0. Если оба бита равны 1, то результат 1. 0, если оба бита будут равны, во всех остальных случаях результат равен 1. 0, если оба бита будут равны 0, во всех остальных случаях результат равен 1.

Слайд 5

Перегрузка операторов. Перегрузка операторов внутри классов . Глобальные переменные, слайд 5
Другие операторы (разыменование указателя и взятие адреса) p.x; A::f, , – оператор последовательного выполнения b (a d), (a d); // b a d A i , a(), a(1,2, Hello )

Слайд 6

Перегрузка операторов. Перегрузка операторов внутри классов . Глобальные переменные, слайд 6
Перегрузка операторов Унарный оператор Умн-е вектора на число Умн-е числа на вектор Исп-ем реализацию вектора на число Если оператор перегружен и внутри, и снаружи, то произойдёт ошибка!

Слайд 7

Перегрузка операторов. Перегрузка операторов внутри классов . Глобальные переменные, слайд 7
Перегрузка операторов внутри классов Для перегрузки операторов мы использовали внешние функции, но можно перегружать операторы и при помощи определения методов. Нет аргументов 1 аргумент Оператор умн-я числа на вектор внутри класса определить не получится Для () может быть произвольное число аргументов, для – 1 аргумент

Слайд 8

Перегрузка операторов. Перегрузка операторов внутри классов . Глобальные переменные, слайд 8
Перегрузка инкремента и декремента Унарный оператор a «заглушка» (чтобы различать постфикс и префикс) a 10; b a ; // b 10; a 11 Сохраняем тек. зн-е Вызываем префикс Вернем временное зн-е Посфикс «сложнее» - вызов префикса и создание копии

Слайд 9

Перегрузка операторов. Перегрузка операторов внутри классов . Глобальные переменные, слайд 9
Переопределение операторов ввода-вывода Поток ввода Возвращаем ссылку на поток ввода Поток вывода Эти операторы всегда переопределяют как внешние функции – т.к. 1-ый аргумент – поток ввода и вывода

Слайд 10

Перегрузка операторов. Перегрузка операторов внутри классов . Глобальные переменные, слайд 10
Операторы с особым порядком вычисления («и», «или», «,») False && () False True () True Сначала выполняется 1-ый операнд, но возвращается второй При перегрузке операторов данный порядок вычислений не гарантируется – все операнды будут вычислены Вычисление 2-го операнда не будет происходить Можно проверить с помощью ф-ций

Слайд 11

Перегрузка операторов. Перегрузка операторов внутри классов . Глобальные переменные, слайд 11
Переопределение арифметических и битовых операторов Внешняя функция Можно было определить как метод Конструктор приведения от строки в стиле Си Эта строчка не скомпилируется, если определить как метод

Слайд 12

Перегрузка операторов. Перегрузка операторов внутри классов . Глобальные переменные, слайд 12
Правильное переопределение операторов сравнения Определяем только 2 оператора и

Слайд 13

Перегрузка операторов. Перегрузка операторов внутри классов . Глобальные переменные, слайд 13
О чём стоит помнить Оператор ничего не возвращает? Не нужно определять как , а / как %. Чтобы не запутаться Допустим, - это векторное умн-е. Но здесь не ясен порядок Так нельзя, т.к. оба операнда – встроенные типы

Слайд 14

Перегрузка операторов. Перегрузка операторов внутри классов . Глобальные переменные, слайд 14
Глобальные переменные Н-р, многопоточные приложения Сложно контролировать зн-е глоб. переменной Если несколько глоб. переменных // разумно всегда инициализировать (.cpp) // лучше в заголовочном файле .hpp

Слайд 15

Перегрузка операторов. Перегрузка операторов внутри классов . Глобальные переменные, слайд 15
Статические глобальные переменные

Слайд 16

Перегрузка операторов. Перегрузка операторов внутри классов . Глобальные переменные, слайд 16
Статические локальные переменные next(10) - 10 next(20) - 11 Инициализация только 1 раз Пример на слайде

Слайд 17

Перегрузка операторов. Перегрузка операторов внутри классов . Глобальные переменные, слайд 17
Статические функции (внутри модуля) Можно иметь ф-ции с одинаковыми названиями Без слов static - ошибка

Слайд 18

Перегрузка операторов. Перегрузка операторов внутри классов . Глобальные переменные, слайд 18
Статические поля класса Так мы можем посчитать кол-во экземпляров типа User Инкремент в конструкторе, декремент в деструкторе Определять нужно снаружи класса

Слайд 19

Перегрузка операторов. Перегрузка операторов внутри классов . Глобальные переменные, слайд 19
Статические методы Есть доступ к закрытым полям класса

Слайд 20

Перегрузка операторов. Перегрузка операторов внутри классов . Глобальные переменные, слайд 20
Ключевое слово inline Вместо вызова ф-ции будет замена на умножение Не получится разделить на определение в заголовочном файле и реализацию в .cpp Если сложная ф-ция

Слайд 21

Перегрузка операторов. Перегрузка операторов внутри классов . Глобальные переменные, слайд 21
Правило одного определения (т.е.одного файла) Ошибка на этапе компиляции Ошибка на этапе линковки Не будет ошибки, но будет некорректная программа

Слайд 22

Перегрузка операторов. Перегрузка операторов внутри классов . Глобальные переменные, слайд 22

Слайд 23

Перегрузка операторов. Перегрузка операторов внутри классов . Глобальные переменные, слайд 23
Вопрос 1

Слайд 24

Перегрузка операторов. Перегрузка операторов внутри классов . Глобальные переменные, слайд 24
Ответ: 3

Слайд 25

Перегрузка операторов. Перегрузка операторов внутри классов . Глобальные переменные, слайд 25
Вопрос 2

Слайд 26

Перегрузка операторов. Перегрузка операторов внутри классов . Глобальные переменные, слайд 26
Вопрос 3

Слайд 27

Перегрузка операторов. Перегрузка операторов внутри классов . Глобальные переменные, слайд 27
Ответ: 1

Слайд 28

Перегрузка операторов. Перегрузка операторов внутри классов . Глобальные переменные, слайд 28
Вопрос 4

Слайд 29

Перегрузка операторов. Перегрузка операторов внутри классов . Глобальные переменные, слайд 29
Ответ: 3

Слайд 30

Перегрузка операторов. Перегрузка операторов внутри классов . Глобальные переменные, слайд 30
Дружественные классы Данные классы не связаны наследованием Обращение к private-полям класса String

Слайд 31

Перегрузка операторов. Перегрузка операторов внутри классов . Глобальные переменные, слайд 31
Дружественные функции Оператор вывода Функцию можно не только объявить, но и определить Получаем доступ к private-полям класса String

Слайд 32

Перегрузка операторов. Перегрузка операторов внутри классов . Глобальные переменные, слайд 32
Дружественные методы Для одного класса можно определить дружественным метод другого класса Определение метода будет после
^ Наверх
X
Благодарим за оценку!

Мы будем признательны, если Вы так же поделитесь этой презентацией со своими друзьями и подписчиками.