Презентация Перевантаження операцій в мові С онлайн
На нашем сайте вы можете скачать и просмотреть онлайн доклад-презентацию на тему Перевантаження операцій в мові С абсолютно бесплатно. Урок-презентация на эту тему содержит всего 11 слайдов. Все материалы созданы в программе PowerPoint и имеют формат ppt или же pptx. Материалы и темы для презентаций взяты из открытых источников и загружены их авторами, за качество и достоверность информации в них администрация сайта не отвечает, все права принадлежат их создателям. Если вы нашли то, что искали, отблагодарите авторов - поделитесь ссылкой в социальных сетях, а наш сайт добавьте в закладки.
Презентации » Устройства и комплектующие » Перевантаження операцій в мові С
Оцените!
Оцените презентацию от 1 до 5 баллов!
- Тип файла:ppt / pptx (powerpoint)
- Всего слайдов:11 слайдов
- Для класса:1,2,3,4,5,6,7,8,9,10,11
- Размер файла:87.50 kB
- Просмотров:50
- Скачиваний:0
- Автор:неизвестен
Слайды и текст к этой презентации:
№1 слайд
![Перевантаження операц й в мов](/documents_6/c686c6ec199e1b6f235542edbeef745e/img0.jpg)
Содержание слайда: Перевантаження операцій в мові С++
При використанні змінних будь-якого стандартного типу, для них припустимий певний набір операцій. Мова С++ надає можливість створювати класи так, щоб вони також реалізовували необхідний набір операцій. Зокрема можливо перевизначити (перевантажити) звичні знаки операцій таким чином, щоб вони стосувались екземплярів класів. Наприклад, нехай визначений клас complex, що реалізує комплексне число. Звісно, можна реалізувати дії з екземплярами цього класу як звертання до певних функцій класу, проте значно зручніше було б оперувати звичними для сприйняття виразами на кшталт:
complex a, b;
complex c = a + b; c = a*b;
Вивченню подібних можливостей і присвячений подальший виклад.
№2 слайд
![Дружн функц . Дружн функц .](/documents_6/c686c6ec199e1b6f235542edbeef745e/img1.jpg)
Содержание слайда: Дружні функції.
Дружні функції.
Як відомо, доступ до закритих (і захищених) членів класу неможливий із зовнішнього коду. Проте виняток становлять так звані “дружні” функції. Достатньо помістити в класі декларацію зовнішньої функції із службовим словом friend, і вона матиме доступ до всіх без винятку членів класу.
class Student {
private :
char name [20]; // ім’я студента
double av_mark; // середній бал
double ex_mark; // бал за екзамен
// дружня функція
friend void excellent (Student &s);
public :
…
};
// Ця функція робить відмінником будь-якого студента
void excellent (Student &s)
{
s.av_mark = 60;
s.ex_mark = 40;
}
№4 слайд
![Вказ вник this. Вказ вник](/documents_6/c686c6ec199e1b6f235542edbeef745e/img3.jpg)
Содержание слайда: Вказівник this.
Вказівник this.
Кожна функція-член класу (в тому числі конструктори та деструктор) мають вказівник this. Його особливість в тому, що він вказує на екземпляр, для якого здійснюється виклик даної функції.
Приклад (продовження).
class Student
{ …
};
int main ()
{
Student st1 (30, 30);
Student st2 (60, 40, "Ivanov");
cout << "Student " << st1.get_mark () << endl;
cout << "Student " << st2.get_exam () << endl;
return 0;
}
В даному прикладі функція get_mark () класу одержує вказівник this, який вказує на екземпляр st1, а функція get_exam () - вказівник this, який вказує на екземпляр st2.
№5 слайд
![Правила перевантаження операц](/documents_6/c686c6ec199e1b6f235542edbeef745e/img4.jpg)
Содержание слайда: Правила перевантаження операцій в класі
Для перевантаження операцій використовуються так звані операторні функції – функції із ідентифікатором operator@, де замість символу @ стоїть знак операції, що перевантажується. При визначенні операторної функції дотримуються спеціальних синтаксичних вимог.
По-перше, операторна функція може бути визначена як функція-член класу або як зовнішня дружня функція.
По-друге, по-різному визначаються унарні та бінарні операції.
№6 слайд
![Декларац я функц -члену класу](/documents_6/c686c6ec199e1b6f235542edbeef745e/img5.jpg)
Содержание слайда: Декларація функції-члену класу для перевантаження бінарної операції:
Декларація функції-члену класу для перевантаження бінарної операції:
<тип_результату> operator@(< тип_операнду_2>);
При цьому перший операнд операції передається неявно у вигляді вказівника this, тобто обов’язково має тип классу. Таким чином, для реалізації операції виду a@b, де a та b – екземпляри відповідного класу, відбувається виклик операторної функції:
a.operator@ (b)
Декларація дружньої функції для перевантаження бінарної операції:
friend <тип_результату> operator@
(<тип_операнду_1>, < тип_операнду_2>);
При цьому для реалізації операції виду a@b відбувається виклик операторної функції:
operator@ (a,b)
№7 слайд
![Декларац я функц -члену класу](/documents_6/c686c6ec199e1b6f235542edbeef745e/img6.jpg)
Содержание слайда: Декларація функції-члену класу для перевантаження унарної операції:
Декларація функції-члену класу для перевантаження унарної операції:
<тип_результату> operator@ ();
При цьому операнд операції передається неявно у вигляді вказівника this, тобто обов’язково має тип классу. Для реалізації операції виду @a відбувається виклик операторної функції: a.operator@ ()
Декларація дружньої функції для перевантаження унарної операції:
friend <тип_результату> operator@
(<тип_операнду>);
В цьому випадку для реалізації операції виду @a відбувається виклик операторної функції:
operator@ (a)
№8 слайд
![Особливост використання](/documents_6/c686c6ec199e1b6f235542edbeef745e/img7.jpg)
Содержание слайда: Особливості використання операції присвоєння.
Особливості використання операції присвоєння.
1. Слід знати, що за умовчанням операція = для двох екземплярів класу здійснює поелементне копіювання даних-членів цих екземплярів. Якщо це саме те, що потрібно для вашого класу, немає необхідності у перевантаженні операції = .
2. Якщо членом класу є вказівник, то за умовчанням відбуватиметься копіювання відповідних вказівників, а не об'єктів, на які вони посилаються (чого, скоріше за все, ви очікуєте при присвоєнні). В такому разі необхідно коректно перевантажити операцію = .
3. Використання параметром такої операторної функції посилання на об'єкт позбавить від створення та знищення у стеку його копії і зекономить ресурси.
№9 слайд
![Ще один нюанс визначення](/documents_6/c686c6ec199e1b6f235542edbeef745e/img8.jpg)
Содержание слайда: Ще один нюанс визначення унарних операцій пов’язаний із операціямии інкременту та декременту. Як відомо, і інкремент, і декремент можуть префіксними або постфіксними (в мові С# вони не розрізнялись). Мова С++ надає можливість реалізувати префіксні та постфіксні операії по-різному. Для цього в операторній функції, що реалізує постфіксні операції, використовується фіктивний параметр. Його наявність дозволяє перевантажити відповідним чином операції:
Ще один нюанс визначення унарних операцій пов’язаний із операціямии інкременту та декременту. Як відомо, і інкремент, і декремент можуть префіксними або постфіксними (в мові С# вони не розрізнялись). Мова С++ надає можливість реалізувати префіксні та постфіксні операії по-різному. Для цього в операторній функції, що реалізує постфіксні операції, використовується фіктивний параметр. Його наявність дозволяє перевантажити відповідним чином операції:
// префіксний інкремент:
<тип_результату> operator++ ();
// постфіксний інкремент:
<тип_результату> operator++ (int unused);
Або, якщо операції визначаються з допомогою дружніх функцій:
// префіксний інкремент:
friend <тип_результату> operator++ (<тип_операнду>);
// постфіксний інкремент:
friend <тип_результату> operator++
(<тип_операнду>, int unused);
Абсолютно аналогічні правила діють і для операції декременту.
№10 слайд
![Зауваження про обмеження при](/documents_6/c686c6ec199e1b6f235542edbeef745e/img9.jpg)
Содержание слайда: Зауваження про обмеження при перевантаженні операцій.
Зауваження про обмеження при перевантаженні операцій.
1. Перевантажена операція класу повинна мати принаймні один операнд з типом даного класу – таким чином забезпечується цілісність операцій зі стандартними типами даних: ви, наприклад, не можете перевантажити операцію + для цілих змінних так, щоб вона реалізовувала, наприклад, віднімання.
2. Перевантажена операція не може змінювати синтаксис існуючих операцій, наприклад операція % не може бути унарною. Так само неможливо змінити пріоритети існуючих операцій.
3. Неможливо створювати нові символи для операцій, наприклад, x**y неможливо реалізувати як піднесення x до степеня y.
4. Не перевантажуються наступні операції:
sizeof . (доступ до елементу) * (операція вказівник на елемент) :: (оператор області видимості) ?: (тернарна операція) та деякі інші, пов’язані з приведенням та перетворенням типів.
№11 слайд
![Зауваження про використання](/documents_6/c686c6ec199e1b6f235542edbeef745e/img10.jpg)
Содержание слайда: Зауваження про використання дружніх функцій при перевантаженні операцій.
Зауваження про використання дружніх функцій при перевантаженні операцій.
1. В багатьох випадках не має різниці, яку саме форму операторної функції (функція-член класу чи дружня функція) ви використовуєте.
2. Якщо ж ви намагаєтесь перевантажити деяку операцію, яка буде використовуватись у виразах, де перший операнд не є екземпляром даного класу (скажімо, при множенні скаляра на екземпляр класу, що реалізує вектор або матрицю), то операторна функція обов'язково має бути реалізована як дружня.
3. Більшість операцій можуть бути перевантажені як функції-члени класу, так і з допомогою дружніх функцій. Проте наступні операції можуть перевантажуватись лише з допомогою функцій-членів класу: = (присвоєння) () (оператор виклику функції) [] (оператор індексації)
-> (доступ до членів класу через вказівник).
Скачать все slide презентации Перевантаження операцій в мові С одним архивом:
Похожие презентации
-
Логічні операції в мові С
-
Базові алгоритмічні структури. Типи даних в мові Pascal. Пріоритет операцій в мові Pascal. (11 клас)
-
ОПЕРАЦІЙНА СИСТЕМА UNIX 1. Загальні відомості і структура ОС UNIX 2. Основи роботи у UNIX 3. Типи оболонок 4. Маски 5. Трубопроводі UNIX - ст
-
Арифметические операции в Паскале
-
Программирование на языке С. Модуль 2. Операции
-
Операции для работы с файлами
-
Операции и выражения. (Лекция 4)
-
Переменные, простейшие операции, ввод/вывод
-
Язык программирования C. Операции
-
Операционная система Windows. Программирование с использованием средств Win32 API. (Лекция 2)