Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 11 лет назад пользователемГригорий Пелевин
1 1 Программирование на языке Си++
2 2 Модуль 4. ПЕРЕГРУЗКА ОПЕРАЦИЙ Методы преобразования. Классы потоков Си++ Операции замещения и вставки Ввод/вывод в файлы
3 3 Расширение действия (перегрузка) операций (начало) Расширение действия (перегрузка) возможность распространения действия стандартных операций на операнды других, «нестандартных» типов. Перегрузка стандартных операций возможна только в том случае, если хотя бы один из операндов является объектом пользовательского класса Определение перегруженной операции (иначе операции-функции) operator ( [ ] ) { [ ] } Описание перегруженной операции operator ( [ ] ); Модуль 4. ПЕРЕГРУЗКА ОПЕРАЦИЙ
4 4 Расширение действия (перегрузка) операций (продолжение) Количество аргументов перегруженной операции зависит от местности операции. Для связи с классом операция- функция должна быть компонентной функцией класса, дружественной по отношению к нему либо располагать хотя бы одним параметром типа «(ссылка на) класс» Будучи компонентной, операция-функция принимает на 1 параметр меньше, чем предусмотрено ее местностью (бинарные операции требуют одного параметра, унарные не требуют параметров вообще). Компонентной не может быть функция, первый параметр которой имеет базовый тип Будучи дружественной (или) глобальной, операция- функция принимает столько фактических параметров, сколько предусмотрено ее местностью (бинарные операции требуют 2 параметров, унарные 1). Глобальными не могут быть функции operator =, operator [], operator ->. Модуль 4. ПЕРЕГРУЗКА ОПЕРАЦИЙ
5 5 Расширение действия (перегрузка) операций (окончание) Операции-функции допускают синтаксически равноправные сокращенную (выражение с операндами требуемых типов, строка 1) и полную (одну из двух в зависимости от порядка определения, строки 2–3) формы вызова (показаны на примере бинарной операции + ): +.operator + ( ) // для компонентных operator + (, )// для глобальных и дружественных Не допускается перегрузка несуществующих (новых), а также ряда стандартных операций языка Си++:..* ?: :: sizeof # ## Перегрузка операций сохраняет их местность и взаимный приоритет (ранг) Модуль 4. ПЕРЕГРУЗКА ОПЕРАЦИЙ
6 6 Особенности перегрузки операций ++, -- Перегрузка префиксных вариантов операций ++ и -- не отличается от описанной ранее Перегрузка постфиксных вариантов операций ++ и – требует включения в заголовок (прототип) операции- функции фиктивного (возможно, неименованного) формального параметра типа int, имеющего нулевое значение и занимающего в заголовке (прототипе) функции последнее место, например: operator ++ (int [ ] ) operator -- (int [ ] ) Модуль 4. ПЕРЕГРУЗКА ОПЕРАЦИЙ
7 7 Потоковый ввод-вывод в языке Си++. Общие положения Реализован посредством популярной, но не являющейся частью стандарта на язык Си++ объектно-ориентированной библиотеки, включающей, среди прочих, заголовочные файлы и Поток с позиций данной библиотеки это имеющая или лишенная буфера обмена последовательность байтов, связанная с устройством, файлом или процессом в памяти. Среди потоков выделяют входные, выходные и двунаправленные. По типам обслуживаемых устройств потоки делятся на стандартные, консольные, файловые и строковые Потоки как механизм ввода-вывода обеспечивают буферизацию сообщений, независимость от файловой системы конкретной ОС, контроль типов и удобный обмен данными произвольной структуры Модуль 4. ПЕРЕГРУЗКА ОПЕРАЦИЙ
8 8 Важнейшие классы. Стандартные потоки ввода-вывода Важнейшими классами библиотеки потокового ввода-вывода являются следующие: –ios базовый класс потока; –istream класс входного потока; –ostream класс выходного потока; –ifstream класс входного файлового потока; –ofstream класс выходного файлового потока При включении в текст программы библиотеки к программе автоматически подключаются (и открываются для обмена) следующие потоки: –istream cin стандартный буферизированный входной поток; –ostream coutстандартный буферизированный выходной поток; –ostream cerr стандартный небуферизированный выходной поток сообщений об ошибках; –ostream clog стандартный буферизированный выходной поток сообщений об ошибках Модуль 4. ПЕРЕГРУЗКА ОПЕРАЦИЙ
9 9 Операции обмена данными и манипуляторы в стандартных потоках Извлечение данных операция >> чтения данных из потока класса istream Включение (вставка) данных операция > и
10 10 Потоковый ввод-вывод пользовательских типов Типовая структура операции-функции включения (вставки) данных в поток ostream [Под03] ostream &operator, ) { // операторы вида: out (istream &, & ) { // операторы вида: in >>...; return in; } Включение (вставка) данных операция > и
11 11 Основы работы с файловыми потоками Открытие файлового потока void open(const char *, int = …, int = …); Проверка успешности выполнения предыдущей операции над потоком (возвращает ненулевое значение как признак ошибки): int operator !(); Закрытие файлового потока void close(); Модуль 4. ПЕРЕГРУЗКА ОПЕРАЦИЙ
12 12 Список литературы [КР92] Керниган Б., Ритчи Д. Язык программирования Си / Пер. с англ. М.: Финансы и статистика, с. [КР06] Керниган Б., Ритчи Д. Язык программирования C / Пер. с англ. М.: Вильямс, с. [ЛЛ01] Липпман С., Лажойе Ж. Язык программирования C++. Вводный курс. СПб.: Невский диалект, с. [Под03] Подбельский В.В. Язык Си++: Учеб. пособие. 5-е изд. М.: Финансы и статистика, – 560 с., ил. [Под04] Подбельский В.В., Фомин С.С. Программирование на языке Си. – 2-е доп. изд. – М.: Финансы и статистика, – 600 с. [Стр08] Страуструп Б. Язык программирования С++. Специальное издание. СПб.: Невский диалект, с.
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.