1 Программирование на языке Си++. 2 Модуль 4. ПЕРЕГРУЗКА ОПЕРАЦИЙ Методы преобразования. Классы потоков Си++ Операции замещения и вставки Ввод/вывод в.

Презентация:



Advertisements
Похожие презентации
1 Программирование на языке Си++. 2 Модуль 5. СТАТИЧЕСКИЕ ЭЛЕМЕНТЫ ДАННЫХ Статические методы Константные объекты и методы Правила инициализации и использования.
Advertisements

1 Программирование на языке Си++. 2 Модуль 8. УПРАВЛЕНИЕ ИСКЛЮЧЕНИЯМИ Применение операторов try, catch, throw Динамическая идентификация типов времени.
1 Программирование на языке Си++. 2 Модуль 6. НАСЛЕДОВАНИЕ И ПОЛИМОРФИЗМ Виртуальные функции и позднее связывание Множественное наследование Виртуальный.
1 Программирование на языке Си++. Модуль 9. ИСПОЛЬЗОВАНИЕ Microsoft Developer Studio Интерфейс Developer Studio (Мастерской разработчика) Создание консольного.
Работа с файлами Сазонов Д.О. ПМиЭММ Часть 2. Тема занятия: Работа с файлами через потоки Для реализации файлового ввода/вывода, необходимо включить в.
Потоковые классы Потоки – последовательности байт, связанные с файлом либо с устройством ввода/вывода. Потоки по направлению обмена делятся на входные,
Потоки Язык C++ не обеспечивает средств для ввода/вывода Ему это и не нужно; такие средства легко и элегантно можно создать с помощью самого языка Традиционно.
Лекция 13. Введение в ООП. Часть 4 Красс Александр СПбГУ ИТМО, 2008.
Работа с файлами FILE НГТУ ИРИТ кафедра ИСУ Ольга Пронина.
ПРОГРАММИРОВАНИЕ/ ЯЗЫКИ ПРОГРАММИРОВАНИЯ Лекция 1 Процедурный подход к разработке программ (весенний семестр 2012 г.) Доцент Кафедры вычислительных систем,
ПРОГРАММИРОВАНИЕ/ ЯЗЫКИ ПРОГРАММИРОВАНИЯ Лекция 3 Работа с файлами (весенний семестр 2012 г.) Доцент Кафедры вычислительных систем, к.т.н. Поляков Артем.
Прикладное программирование кафедра прикладной и компьютерной оптики Полиморфизм.
Потоки (файлы) Функции и типы для работы с потоками в стиле С описаны в модуле stdio.h. В отличие от Паскаля в С с потоком не связан тип данных. Поток.
Лекция 12 Перегрузка операторов. Часть 2. Подбельский гл. 9.7, Страуструп гл. 11, Мейрс п. 11,15-17,19. Перегрузка копирующего конструктора T(const T&)
1 Программирование на языке Си++. 2 Модуль 1. ТИПЫ ДАННЫХ, ОПЕРАЦИИ И ФУНКЦИИ В Си++ Ссылочный тип данных Операции расширения контекста, new, delete Встроенные.
ПРОГРАММИРОВАНИЕ/ ЯЗЫКИ ПРОГРАММИРОВАНИЯ Лекция 4 Работа с бинарными файлами (весенний семестр 2012 г.) Доцент Кафедры вычислительных систем, к.т.н. Поляков.
М.Ю. Харламов, ВНУ им. В.Даля, Семантический анализатор Семантический анализатор выполняет следующие основные действия: проверку соблюдения во входной.
Функции Функция – именованная последовательность описаний и операторов, выполняющая некоторое действие. Может иметь параметры и возвращать значение. Функция.
Лекция 11 Файлы. Точного определения файла не существует. Файлом может быть: Объект файловой системы (файлы, папки и т.д.) Устройство ввода/вывода (клавиатура,
О конформности Си-программ Михаил Посыпкин ИСП РАН.
Транксрипт:

1 Программирование на языке Си++

2 Модуль 4. ПЕРЕГРУЗКА ОПЕРАЦИЙ Методы преобразования. Классы потоков Си++ Операции замещения и вставки Ввод/вывод в файлы

3 Расширение действия (перегрузка) операций (начало) Расширение действия (перегрузка) возможность распространения действия стандартных операций на операнды других, «нестандартных» типов. Перегрузка стандартных операций возможна только в том случае, если хотя бы один из операндов является объектом пользовательского класса Определение перегруженной операции (иначе операции-функции) operator ( [ ] ) { [ ] } Описание перегруженной операции operator ( [ ] ); Модуль 4. ПЕРЕГРУЗКА ОПЕРАЦИЙ

4 Расширение действия (перегрузка) операций (продолжение) Количество аргументов перегруженной операции зависит от местности операции. Для связи с классом операция- функция должна быть компонентной функцией класса, дружественной по отношению к нему либо располагать хотя бы одним параметром типа «(ссылка на) класс» Будучи компонентной, операция-функция принимает на 1 параметр меньше, чем предусмотрено ее местностью (бинарные операции требуют одного параметра, унарные не требуют параметров вообще). Компонентной не может быть функция, первый параметр которой имеет базовый тип Будучи дружественной (или) глобальной, операция- функция принимает столько фактических параметров, сколько предусмотрено ее местностью (бинарные операции требуют 2 параметров, унарные 1). Глобальными не могут быть функции operator =, operator [], operator ->. Модуль 4. ПЕРЕГРУЗКА ОПЕРАЦИЙ

5 Расширение действия (перегрузка) операций (окончание) Операции-функции допускают синтаксически равноправные сокращенную (выражение с операндами требуемых типов, строка 1) и полную (одну из двух в зависимости от порядка определения, строки 2–3) формы вызова (показаны на примере бинарной операции + ): +.operator + ( ) // для компонентных operator + (, )// для глобальных и дружественных Не допускается перегрузка несуществующих (новых), а также ряда стандартных операций языка Си++:..* ?: :: sizeof # ## Перегрузка операций сохраняет их местность и взаимный приоритет (ранг) Модуль 4. ПЕРЕГРУЗКА ОПЕРАЦИЙ

6 Особенности перегрузки операций ++, -- Перегрузка префиксных вариантов операций ++ и -- не отличается от описанной ранее Перегрузка постфиксных вариантов операций ++ и – требует включения в заголовок (прототип) операции- функции фиктивного (возможно, неименованного) формального параметра типа int, имеющего нулевое значение и занимающего в заголовке (прототипе) функции последнее место, например: operator ++ (int [ ] ) operator -- (int [ ] ) Модуль 4. ПЕРЕГРУЗКА ОПЕРАЦИЙ

7 Потоковый ввод-вывод в языке Си++. Общие положения Реализован посредством популярной, но не являющейся частью стандарта на язык Си++ объектно-ориентированной библиотеки, включающей, среди прочих, заголовочные файлы и Поток с позиций данной библиотеки это имеющая или лишенная буфера обмена последовательность байтов, связанная с устройством, файлом или процессом в памяти. Среди потоков выделяют входные, выходные и двунаправленные. По типам обслуживаемых устройств потоки делятся на стандартные, консольные, файловые и строковые Потоки как механизм ввода-вывода обеспечивают буферизацию сообщений, независимость от файловой системы конкретной ОС, контроль типов и удобный обмен данными произвольной структуры Модуль 4. ПЕРЕГРУЗКА ОПЕРАЦИЙ

8 Важнейшие классы. Стандартные потоки ввода-вывода Важнейшими классами библиотеки потокового ввода-вывода являются следующие: –ios базовый класс потока; –istream класс входного потока; –ostream класс выходного потока; –ifstream класс входного файлового потока; –ofstream класс выходного файлового потока При включении в текст программы библиотеки к программе автоматически подключаются (и открываются для обмена) следующие потоки: –istream cin стандартный буферизированный входной поток; –ostream coutстандартный буферизированный выходной поток; –ostream cerr стандартный небуферизированный выходной поток сообщений об ошибках; –ostream clog стандартный буферизированный выходной поток сообщений об ошибках Модуль 4. ПЕРЕГРУЗКА ОПЕРАЦИЙ

9 Операции обмена данными и манипуляторы в стандартных потоках Извлечение данных операция >> чтения данных из потока класса istream Включение (вставка) данных операция > и

10 Потоковый ввод-вывод пользовательских типов Типовая структура операции-функции включения (вставки) данных в поток ostream [Под03] ostream &operator, ) { // операторы вида: out (istream &, & ) { // операторы вида: in >>...; return in; } Включение (вставка) данных операция > и

11 Основы работы с файловыми потоками Открытие файлового потока void open(const char *, int = …, int = …); Проверка успешности выполнения предыдущей операции над потоком (возвращает ненулевое значение как признак ошибки): int operator !(); Закрытие файлового потока void close(); Модуль 4. ПЕРЕГРУЗКА ОПЕРАЦИЙ

12 Список литературы [КР92] Керниган Б., Ритчи Д. Язык программирования Си / Пер. с англ. М.: Финансы и статистика, с. [КР06] Керниган Б., Ритчи Д. Язык программирования C / Пер. с англ. М.: Вильямс, с. [ЛЛ01] Липпман С., Лажойе Ж. Язык программирования C++. Вводный курс. СПб.: Невский диалект, с. [Под03] Подбельский В.В. Язык Си++: Учеб. пособие. 5-е изд. М.: Финансы и статистика, – 560 с., ил. [Под04] Подбельский В.В., Фомин С.С. Программирование на языке Си. – 2-е доп. изд. – М.: Финансы и статистика, – 600 с. [Стр08] Страуструп Б. Язык программирования С++. Специальное издание. СПб.: Невский диалект, с.