🗊 Презентация Объектно-ориентированное программирование. Перегрузка операций

Нажмите для полного просмотра!
Объектно-ориентированное программирование. Перегрузка операций, слайд №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

Содержание

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

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


Слайд 1


ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ Перегрузка операций
Описание слайда:
ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ Перегрузка операций

Слайд 2


НЕЛЬЗЯ перегружать НЕЛЬЗЯ перегружать * ?: :: # ## sizeof ПРАВИЛА перегрузки при перегрузке операций сохраняются количество аргументов, приоритеты...
Описание слайда:
НЕЛЬЗЯ перегружать НЕЛЬЗЯ перегружать * ?: :: # ## sizeof ПРАВИЛА перегрузки при перегрузке операций сохраняются количество аргументов, приоритеты операций и правила ассоциации (справа налево или слева направо), используемые в стандартных типах данных; для стандартных типов данных переопределять операции нельзя; функции-операции не могут иметь аргументов по умолчанию; функции-операции наследуются (за исключением =); функции-операции не могут определяться как static. тип operator операция (список параметров) {тело функции}

Слайд 3


Перегрузка унарных операций class monstr { … monstr & operator ++() {++health; return *this;} }; monstr Vasia; cout « (++Vasia).get_health();
Описание слайда:
Перегрузка унарных операций class monstr { … monstr & operator ++() {++health; return *this;} }; monstr Vasia; cout « (++Vasia).get_health();

Слайд 4


Перегрузка унарных операций class monstr { … friend monstr & operator ++( monstr &M); }; monstr& operator ++(monstr &M) {++M.health; return M;}
Описание слайда:
Перегрузка унарных операций class monstr { … friend monstr & operator ++( monstr &M); }; monstr& operator ++(monstr &M) {++M.health; return M;}

Слайд 5


Перегрузка унарных операций void change_health(int he){health = he;} monstr& operator ++(monstr &М) { int h = M.get_health(); h++;...
Описание слайда:
Перегрузка унарных операций void change_health(int he){health = he;} monstr& operator ++(monstr &М) { int h = M.get_health(); h++; M.change_health(h); return М; }

Слайд 6


Перегрузка унарных операций class monstrj monstr operator ++(int){ monstr MCnhis); health++; return M; } }: monstr Vasia: cout «...
Описание слайда:
Перегрузка унарных операций class monstrj monstr operator ++(int){ monstr MCnhis); health++; return M; } }: monstr Vasia: cout « (Vas1a++).get_health();

Слайд 7


Перегрузка операций new и delete им не требуется передавать параметр типа класса; первым параметром функциям new и new[] должен передаваться размер...
Описание слайда:
Перегрузка операций new и delete им не требуется передавать параметр типа класса; первым параметром функциям new и new[] должен передаваться размер объекта типа size_t; они должны определяться с типом возвращаемого значения void*, даже если return возвращает указатель на другие типы; Операция delete должна иметь тип возврата void и первый аргумент типа void*; операции выделения и освобождения памяти являются статическими элементами класса.

Слайд 8


Перегрузка операций new и delete class Obj {...}; class pObj { … private: Obj *p; }; new Obj *p = new pObj; sizeof(pObj)
Описание слайда:
Перегрузка операций new и delete class Obj {...}; class pObj { … private: Obj *p; }; new Obj *p = new pObj; sizeof(pObj)

Слайд 9


Перегрузка операций new и delete class pObj { public: static void * operator new(size_t size); private: union { Obj *p; // Указатель на объект pObj...
Описание слайда:
Перегрузка операций new и delete class pObj { public: static void * operator new(size_t size); private: union { Obj *p; // Указатель на объект pObj *next; // Указатель на следующую свободную ячейку }; static const int BLOCK_SIZE; // Размер блока static pObj *headOfFree; // Заголовок списка свободных ячеек: };

Слайд 10


Перегрузка операций new и delete void * pObj::operator new(size_t size) { // Перенаправить запросы неверного количества памяти // стандартной...
Описание слайда:
Перегрузка операций new и delete void * pObj::operator new(size_t size) { // Перенаправить запросы неверного количества памяти // стандартной операции new: if (size != sizeof(pObj)) return ::operator new(size); pObj *p = headOfFree; // Указатель на первую свободную ячейку // Переместить указатель списка свободных ячеек: if (р) headOfFree = р -> next;

Слайд 11


Перегрузка операций new и delete // Если свободной памяти нет. выделяем очередной блок: else { pObj *newblock = static_cast (::operator...
Описание слайда:
Перегрузка операций new и delete // Если свободной памяти нет. выделяем очередной блок: else { pObj *newblock = static_cast (::operator new(BLOCK_SIZE * sizeof(pObj))); // Bee ячейки свободны, кроме первой (она будет занята), связываем их: for (int i = 1: i< BLOCKJIZE - 1; ++i) newblock[i].next = &newblock[i + 1 ] ; newblock[BLOCK_SIZE - 1].next = 0: // Устанавливаем начало списка свободных ячеек: headOfFree = &newblock[1]; р = newblock; } return p; // Возвращаем указатель на выделенную память }

Слайд 12


Перегрузка операций new и delete pObj *pObj::headOfFree; // Устанавливается в 0 по умолчанию const int pObj::BLOCK_SIZE = 1024;
Описание слайда:
Перегрузка операций new и delete pObj *pObj::headOfFree; // Устанавливается в 0 по умолчанию const int pObj::BLOCK_SIZE = 1024;

Слайд 13


Перегрузка операции приведения типа Operator имя нового типа (); Пример: monstr::operator int(){return health;} … monstr Vasia; cout « int(Vasia);
Описание слайда:
Перегрузка операции приведения типа Operator имя нового типа (); Пример: monstr::operator int(){return health;} … monstr Vasia; cout « int(Vasia);

Слайд 14


Перегрузка операции вызова функции class if_greater { public: int operator () (int a, int b) const { return a > b; } };
Описание слайда:
Перегрузка операции вызова функции class if_greater { public: int operator () (int a, int b) const { return a > b; } };

Слайд 15


Перегрузка операции вызова функции Пример: if_greater х; cout « х(1. 5) « endl; // Результат - 0 cout « if_greater()(5. 1) « endl; // Результат - 1
Описание слайда:
Перегрузка операции вызова функции Пример: if_greater х; cout « х(1. 5) « endl; // Результат - 0 cout « if_greater()(5. 1) « endl; // Результат - 1

Слайд 16


Перегрузка операции индексирования [] #1nclucle #1nclude class Vect { public: explicit Vect(int n = 10); Vect(const int a[]. int n); //инициализация...
Описание слайда:
Перегрузка операции индексирования [] #1nclucle #1nclude class Vect { public: explicit Vect(int n = 10); Vect(const int a[]. int n); //инициализация массивом Vect() { delete [] p; } int& operator [] (int i); void Print(); … private: int* p; int size; };

Слайд 17


Перегрузка операции индексирования [] Vect::Vect(int n) : size(n) { p = new int[size]; } Vect::Vect(const int a[]. int n) : size(n) { p = new...
Описание слайда:
Перегрузка операции индексирования [] Vect::Vect(int n) : size(n) { p = new int[size]; } Vect::Vect(const int a[]. int n) : size(n) { p = new int[size]; for (int i = 0; i < size; i++) p[i] = a[i]; }

Слайд 18


Перегрузка операции индексирования [] // Перегрузка операции индексирования: int& Vect::operator [] (int i) { if(i < 0 II i >= size) { cout «...
Описание слайда:
Перегрузка операции индексирования [] // Перегрузка операции индексирования: int& Vect::operator [] (int i) { if(i < 0 II i >= size) { cout « "Неверный индекс (i = " « i « ")" « endl; cout « "Завершение программы" « endl; exit(0); } return p[i]; }

Слайд 19


Перегрузка операции индексирования [] void Vect::Print() { for (int i = 0; i < size; i++) cout « p[i] « " "; cout « endl; } int main() {...
Описание слайда:
Перегрузка операции индексирования [] void Vect::Print() { for (int i = 0; i < size; i++) cout « p[i] « " "; cout « endl; } int main() { int агг[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; Vect а(агг, 10); a.Print(); cout « a[5] « end!; cout « a[12] « endl; return 0; }

Слайд 20


Перегрузка операции индексирования [] Результат работы программы: 1 2 3 4 5 6 7 8 9 10 6 Неверный индекс (i = 12) Завершение программы
Описание слайда:
Перегрузка операции индексирования [] Результат работы программы: 1 2 3 4 5 6 7 8 9 10 6 Неверный индекс (i = 12) Завершение программы

Слайд 21


Указатели на элементы классов .* и ->* Формат указателя на метод класса: возвр тип (имя класса::*имя указателя)(параметры); Например: int...
Описание слайда:
Указатели на элементы классов .* и ->* Формат указателя на метод класса: возвр тип (имя класса::*имя указателя)(параметры); Например: int get_health() {return health;} int get_ammo() {return ammo;} int (monstr:: *pget)(); void fun(int (monstr:: *pget)()) { (*this.*pget)(); // Вызов функции через операцию .* (this->*pget)(); // Вызов функции через операцию ->* }

Слайд 22


Указатели на элементы классов Пример: // Присваивание значения указателю: pget « & monstr::get_health; monstr Vasia. *p; p = new monstr; // Вызов...
Описание слайда:
Указатели на элементы классов Пример: // Присваивание значения указателю: pget « & monstr::get_health; monstr Vasia. *p; p = new monstr; // Вызов функции через операцию .* : int Vasin_health = (Vasia.*pget)(); // Вызов функции через операцию ->* : int p_health = (p->*pget)();

Слайд 23


Указатели на элементы классов Правила использования указателей на методы классов: Указателю на метод можно присваивать только адрес методов, имеющих...
Описание слайда:
Указатели на элементы классов Правила использования указателей на методы классов: Указателю на метод можно присваивать только адрес методов, имеющих соответствующий заголовок. Нельзя определить указатель на статический метод класса. Нельзя преобразовать указатель на метод в указатель на обычную функцию, не являющуюся элементом класса.

Слайд 24


Указатели на элементы классов Формат указателя на поле класса: Тип данных (имя класса::*имя указателя); &имя_класса: :имя_поля;// Поле должно быть...
Описание слайда:
Указатели на элементы классов Формат указателя на поле класса: Тип данных (имя класса::*имя указателя); &имя_класса: :имя_поля;// Поле должно быть public int (monstr::*phealth) » &monstr::health; cout « Vasia.*phealth; // Обращение через операцию .* cout « p->*phealth; // Обращение через операцию ->*

Слайд 25


Рекомендации по составу класса Класс должен содержать: скрытые поля (private) функции: конструкторы, определяющие, как инициализируются объекты...
Описание слайда:
Рекомендации по составу класса Класс должен содержать: скрытые поля (private) функции: конструкторы, определяющие, как инициализируются объекты класса; набор методов, реализующих свойства класса; набор операций, позволяющих копировать, присваивать, сравнивать объекты и производить с ними другие действия, требующиеся по сути класса; Класс исключений, используемый для сообщений об ошибках с помощью генерации исключительных ситуаций.



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