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

Нажмите для полного просмотра!
Перегрузка операций, слайд №1 Перегрузка операций, слайд №2 Перегрузка операций, слайд №3 Перегрузка операций, слайд №4 Перегрузка операций, слайд №5 Перегрузка операций, слайд №6 Перегрузка операций, слайд №7 Перегрузка операций, слайд №8 Перегрузка операций, слайд №9 Перегрузка операций, слайд №10 Перегрузка операций, слайд №11 Перегрузка операций, слайд №12 Перегрузка операций, слайд №13 Перегрузка операций, слайд №14 Перегрузка операций, слайд №15 Перегрузка операций, слайд №16 Перегрузка операций, слайд №17 Перегрузка операций, слайд №18 Перегрузка операций, слайд №19 Перегрузка операций, слайд №20 Перегрузка операций, слайд №21 Перегрузка операций, слайд №22

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

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


Слайд 1


ПЕРЕГРУЗКА ОПЕРАЦИЙ
Описание слайда:
ПЕРЕГРУЗКА ОПЕРАЦИЙ

Слайд 2


Перегрузка операций — это пример полиморфизма С++. Перегрузка операций — это пример полиморфизма С++. С++ позволяет определять несколько функций с...
Описание слайда:
Перегрузка операций — это пример полиморфизма С++. Перегрузка операций — это пример полиморфизма С++. С++ позволяет определять несколько функций с одинаковыми именами и разной сигнатурой (списками аргументов). Это называлось перегрузкой функций или функциональным полиморфизмом. Цель такой перегрузки — позволить использовать одно и то же имя функции для некоторой базовой операции, несмотря на то, что она применяется к данным разных типов. Перегрузка операций расширяет концепцию перегрузки на операции, позволяя трактовать их множеством способов.

Слайд 3


Перегруженные операции часто могут заставить код выглядеть более естественно. Например, общей вычислительной задачей является сложение двух массивов....
Описание слайда:
Перегруженные операции часто могут заставить код выглядеть более естественно. Например, общей вычислительной задачей является сложение двух массивов. Обычно это выглядит подобно следующему циклу for: Перегруженные операции часто могут заставить код выглядеть более естественно. Например, общей вычислительной задачей является сложение двух массивов. Обычно это выглядит подобно следующему циклу for: for (int i = 0; i < 20; i++) massC[i]=massA[i]+massB[i];//поэлементное сложение Но в С++ можно определить класс, который представляет массивы и перегружает операцию + таким образом, что станет возможным приведенный ниже код: massC = massA + massB;// сложить два объекта-массива

Слайд 4


Для перегрузки операции используется специальная форма функции, называемая функцией операции. Функция операции имеет следующую форму, в которой ор —...
Описание слайда:
Для перегрузки операции используется специальная форма функции, называемая функцией операции. Функция операции имеет следующую форму, в которой ор — это символ перегружаемой операции: Для перегрузки операции используется специальная форма функции, называемая функцией операции. Функция операции имеет следующую форму, в которой ор — это символ перегружаемой операции: operatorop (список-аргументов) Например, operator+ ( ) перегружает операцию +, a operator* ( ) — операцию *. Операция ор должна быть допустимой операцией С++, а не произвольным символом.

Слайд 5


Предположим, что имеется класс Salesperson, в котором определена функция-член operator+ ( ) для перегрузки операции + так, что она сможет добавлять...
Описание слайда:
Предположим, что имеется класс Salesperson, в котором определена функция-член operator+ ( ) для перегрузки операции + так, что она сможет добавлять зарплату одного лица к зарплате другого лица. Тогда если sam, sid и sara — объекты класса Salesperson, можно написать следующее выражение: Предположим, что имеется класс Salesperson, в котором определена функция-член operator+ ( ) для перегрузки операции + так, что она сможет добавлять зарплату одного лица к зарплате другого лица. Тогда если sam, sid и sara — объекты класса Salesperson, можно написать следующее выражение: sam = sid + sara; Компилятор, распознав операцию как относящуюся к классу Salesperson, заменит ее вызовом соответствующей функции операции: sam = sid.operator+(sara) ;

Слайд 6


Если вы находились в системе под конкретным именем пользователя в течение 2 часов 35 минут с утра и 2 часов 40 минут после обеда, то сколько всего...
Описание слайда:
Если вы находились в системе под конкретным именем пользователя в течение 2 часов 35 минут с утра и 2 часов 40 минут после обеда, то сколько всего времени вы проработали в системе? Ниже приведен пример, в котором концепция сложения имеет смысл, несмотря на то, что единицы, которые вы складываете (смесь часов и минут) не соответствует какому-либо встроенному типу. Если вы находились в системе под конкретным именем пользователя в течение 2 часов 35 минут с утра и 2 часов 40 минут после обеда, то сколько всего времени вы проработали в системе? Ниже приведен пример, в котором концепция сложения имеет смысл, несмотря на то, что единицы, которые вы складываете (смесь часов и минут) не соответствует какому-либо встроенному типу.

Слайд 7


// mytime.h — класс Time до перегрузки операции // mytime.h — класс Time до перегрузки операции class Time { private: int hours; int minutes; public:...
Описание слайда:
// mytime.h — класс Time до перегрузки операции // mytime.h — класс Time до перегрузки операции class Time { private: int hours; int minutes; public: Time () ; Time (int h, int m); void AddMin(int m) ; void AddHr (int h) ; void Reset (int h , int m) ; Time Sum (const Time & t) ; void Show () ; } ;

Слайд 8


// mytime.срр -- реализация методов Time // mytime.срр -- реализация методов Time #include #include "mytime.h" Time::Time() { hours =...
Описание слайда:
// mytime.срр -- реализация методов Time // mytime.срр -- реализация методов Time #include #include "mytime.h" Time::Time() { hours = minutes = 0; } Time::Time(int h, int m ) { hours = h; minutes = m; } void Time::AddMin(int m) { minutes += m; hours += minutes / 60; minutes %= 60; } void Time::AddHr(int h) { hours += h; }

Слайд 9


void Time::Reset (int h, int m) { void Time::Reset (int h, int m) { hours = h; minutes = m; } Time Time:: Sum (const Time & t) { Time sum;...
Описание слайда:
void Time::Reset (int h, int m) { void Time::Reset (int h, int m) { hours = h; minutes = m; } Time Time:: Sum (const Time & t) { Time sum; sum.minutes = minutes + t.minutes; sum.hours = hours + t.hours + sum.minutes / 60; sum.minutes %= 60; return sum; } void Time::Show () { std::cout « hours « " hours, " « minutes « " minutes"; }

Слайд 10


// usetime.срр -- использование первой черновой версии класса Time // usetime.срр -- использование первой черновой версии класса Time //...
Описание слайда:
// usetime.срр -- использование первой черновой версии класса Time // usetime.срр -- использование первой черновой версии класса Time // компилировать usetime.срр и mytime.cpp вместе #include #include "mytime.h" int main() { using std::cout; using std::endl; Time planning; Time coding(2, 40); Time fixing(5, 55); Time total; cout « "planning time = "; planning.Show (); cout « endl; cout « "coding time = "; coding.Show (); cout « endl; cout « "fixing time = "; fixing.Show (); cout « endl; total = coding.Sum(fixing) ; cout « "coding. Sum (fixing) = "; total.Show(); cout « endl; return 0; }

Слайд 11


Ниже показан вывод программы из листингов Ниже показан вывод программы из листингов planning time = 0 hours, 0 minutes coding time = 2 hours, 40...
Описание слайда:
Ниже показан вывод программы из листингов Ниже показан вывод программы из листингов planning time = 0 hours, 0 minutes coding time = 2 hours, 40 minutes fixing time = 5 hours, 55 minutes coding.Sum(fixing) = 8 hours, 35 minutes

Слайд 12


// nmytime.h — класс Time после перегрузки операции // nmytime.h — класс Time после перегрузки операции class Time { private: int hours; int minutes;...
Описание слайда:
// nmytime.h — класс Time после перегрузки операции // nmytime.h — класс Time после перегрузки операции class Time { private: int hours; int minutes; public: Time(); Time (int h, int m) ; void AddMin (int m) ; void AddHr(int h); void Reset (int h , int m) ; Time operator+(const Time & t); void Show(); };

Слайд 13


// nmytime.срр — реализация методов Time // nmytime.срр — реализация методов Time #include #include "nmytime. h" Time: :Time () { hours =...
Описание слайда:
// nmytime.срр — реализация методов Time // nmytime.срр — реализация методов Time #include #include "nmytime. h" Time: :Time () { hours = minutes = 0; } Time::Time (int h, int m ) { hours = h; minutes = m; } void Time::AddMin (int m) { minutes += m; hours += minutes / 60; minutes %= 60; } void Time::AddHr(int h) { hours += h; }

Слайд 14


void Time::Reset (int h, int m) { void Time::Reset (int h, int m) { hours = h; minutes = m; } Time Time::operator+(const Time & t) { Time sum;...
Описание слайда:
void Time::Reset (int h, int m) { void Time::Reset (int h, int m) { hours = h; minutes = m; } Time Time::operator+(const Time & t) { Time sum; sum.minutes = minutes + t.minutes; sum.hours = hours + t.hours + sum.minutes / 60; sum.minutes %= 60; return sum; } void Time::Show() { std::cout « hours « " hours, " « minutes « " minutes"; }

Слайд 15


Метод operator+ () можно вызвать с использованием того же синтаксиса, что и в случае с Sum (): Метод operator+ () можно вызвать с использованием того...
Описание слайда:
Метод operator+ () можно вызвать с использованием того же синтаксиса, что и в случае с Sum (): Метод operator+ () можно вызвать с использованием того же синтаксиса, что и в случае с Sum (): total=coding.operator+(fixing);//нотация с функцией Но назначение методу имени operator+ () позволяет также применить нотацию операции: total = coding + fixing;// нотация с операцией Оба варианта вызывают метод operator+ (). Обратите внимание, что в нотации с операцией объект слева от операции (в рассматриваемом случае coding) является вызывающим объектом, а объект справа (в данном случае fixing) передается в качестве аргумента.

Слайд 16


// nusetime.срр — использование второй черновой версии класса Time // nusetime.срр — использование второй черновой версии класса Time //...
Описание слайда:
// nusetime.срр — использование второй черновой версии класса Time // nusetime.срр — использование второй черновой версии класса Time // компилировать nusetime.срр и nmytime.cpp вместе #include #include “nmytime.h" int main () { using std::cout; using std::endl; Time planning; Time coding(2, 40); Time fixing (5, 55); Time total; cout « "planning time = "; planning.Show () ; cout « endl; cout « "coding time = "; coding.Show (); cout « endl; cout « "fixing time = "; fixing.Show () ; cout « endl; total = coding + fixing; // Нотация с операцией

Слайд 17


cout
Описание слайда:
cout

Слайд 18


int а, b, с; int а, b, с; Time А, В, С; с = а + b; // используется сложение значений int С = А + В; // используется сложение, определенное для...
Описание слайда:
int а, b, с; int а, b, с; Time А, В, С; с = а + b; // используется сложение значений int С = А + В; // используется сложение, определенное для объектов Time

Слайд 19


ОГРАНИЧЕНИЯ ПЕРЕГРУЗКИ ОГРАНИЧЕНИЯ ПЕРЕГРУЗКИ Перегруженные операции должны иметь как минимум один операнд типа, определяемого пользователем. Это...
Описание слайда:
ОГРАНИЧЕНИЯ ПЕРЕГРУЗКИ ОГРАНИЧЕНИЯ ПЕРЕГРУЗКИ Перегруженные операции должны иметь как минимум один операнд типа, определяемого пользователем. Это предотвращает перегрузку операций, работающих со стандартными типами. То есть переопределить операцию "минус" (-) так, чтобы она вычисляла сумму двух вещественных чисел вместо разности, не получится. Это ограничение сохраняет здравый смысл, заложенный в программу, хотя и несколько препятствует полету творчества. Вы не можете использовать операцию в такой манере, которая нарушает правила синтаксиса исходной операции.

Слайд 20


Вы не можете определять новые символы операций. Вы не можете определять новые символы операций. Нельзя перегружать следующие операции:
Описание слайда:
Вы не можете определять новые символы операций. Вы не можете определять новые символы операций. Нельзя перегружать следующие операции:

Слайд 21


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

Слайд 22


Перегрузка операций, слайд №22
Описание слайда:



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