Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ООП на языке С++.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.8 Mб
Скачать

Министерство образования и науки РФ

Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования

Пермский национальный исследовательский

политехнический университет

А.М. Ноткин

Объектно-ориентированное программирование:

ООП на языке С++

Учебное пособие

Издательство ПНИПУ

2012

УДК 681.3

Н85

Рецензенты:

зав. лабораторией ТиИС ИМСС Уральского отделения РАН

канд. техн. наук, ст. научный сотрудник

Масич Г. Ф.

доцент кафедры Информационных технологий

и автоматизированных систем

Пермского государственного технического университета

канд. техн. наук, доцент

Полякова О. А.

Ноткин, А.М.

Объектно-ориентированное программирование:ООП на языке С++:

Учебное пособие / А.М.Ноткин.– Пермь: Изд-во ПНИПУ – 182 с.

Пособие является первой частью многотомного издания, посвященного технологии объектно-ориентированного программирования и посвящено ООП на языке С++. Следующие тома будут посвящены ООП на языках Java, C# NET, Pyton и Ruby.

Задача пособия – дать студентам основные понятия ООП и технологию объектно-ориентированного программирования на языке С++. Подробно рассматриваются синтаксис, семантика и техника программирования. Приведено большое количество примеров, иллюстрирующих возможности и особенности применения языка С++ для создания объектно-ориентированных программ.

Предназначено для студентов направления «Информатика и вычислительная техника» как для самостоятельной работы, так и в рамках аудиторных занятий.

УДК 681.3

©ФГБОУ ВПО «Пермский национальный исследовательский политехнический университет», 2012

Содержание

1. Классы С++……………………………………………….5

  1. Новый тип данных– класс. …………………………….5

  2. Доступность компонентов класса……………………..7

  3. Конструктор и деструктор……………………………..8

  4. Компоненты– данные и компоненты– функции…….14

  1. Данные– члены класса………………………………14

  2. Функции– члены класса…………………………….14

  3. Константные компоненты-функции………………..15

  4. Статические члены класса………………………… .15

1.5. Указатель на компоненты класса……………………..18

  1. Указатель на компоненты– данные………………....18

  2. Указатель на компоненты– функции……………….19

  1. Указатель this…………………………………………...19

  1. Друзья классов………………………………………….21

  1. Дружественная функция……………………………..21

  2. Дружественный класс………………………………..23

  1. Определение классов и методов классов……………..24

2. Наследование……………………………………………..29

  1. Определение производного класса……………………29

  2. Конструкторы и деструкторы производных классов...32

  3. Виртуальные функции…………………………………36

  4. Абстрактные классы…………………………………...38

  5. Включение объектов…………………………………..40

  6. Включение и наследование……………………………42

  7. Множественное наследование………………………...47

  8. Локальные и вложенные классы………………………50

  9. Пример программы…………………………………….54

  10. Упражнения……………………………………………62

3. Перегрузка операций……………………………………..68

  1. Перегрузка унарных операций………………………...69

  2. Перегрузка бинарных операций……………………….70

  3. Перегрузка операций ++ и --…………………………..71

  4. Перегрузка операции вызова функции……………….72

  5. Перегрузка операции присваивания………………….72

  6. Перегрузка операции new……………………………..75

  7. Перегрузка операции delete…………………………...80

  8. Основные правила перегрузки операций…………….80

  9. Примеры программ…………………………………….82

4. Шаблоны функций и классов…………………………....87

4.1. Шаблоны функций……………………………………..87

4.2. Шаблоны классов……………………………………....91

4.3.Компонентные функции параметризованных классов..92

4.4. Примеры программ……………………………………..95

5. Обработка исключительных ситуаций………………….100

5.1. Механизм обработки исключений в С++……………..100

5.2. Получение дополнительной информации

об исключении………………………………………………107

5.3. Определение типа исключения………………………..109

5.4. Иерархия исключений………………………………….111

5.5. Спецификация функций, обрабатывающих

исключения…………………………………………………..112

6. Потоковые классы………………………………………...114

6.1. Библиотека потоковых классов………………………..114

6.2. Ввод-вывод в языке С++……………………………….114

6.3. Стандартные потоки ввода-вывода……………………117

6.4. Форматирование………………………………………..118

6.5. Манипуляторы………………………………………….119

6.6. Ввод-вывод объектов пользовательских классов…….120

6.7. Определение пользовательских манипуляторов……..122

6.8. Пользовательские манипуляторы с параметрами…....124

6.9. Использование макросов для создания

манипуляторов ……………………………………………..125

6.10. Состояние потока…………………………………….126

6.11. Неформатированный ввод-вывод………………..….128

6.12. Файловый ввод-вывод……………………………….132

7. Новые возможности языка С++………………………...138

7.1. Пространство имен………………………………….....138

7.2. Динамическая идентификация типов………………...141

7.3.Безопасное приведение типа…………………………..143

8. Стандартная библиотека шаблонов…………………….146

8.1. Введение в STL…………………………………………146

8.2. Итераторы……………………………………………....148

8.3. Классы-контейнеры…………………………………....150

8.4. Контейнер vector……………………………………….153

8.5. Многомерные массивы…………………………….…..157

8.6. Ассоциативные контейнеры……………………….….160

8.7.Объекты-функции…………………………….…….…..167

8.8. Алгоритмы………………………………………..…….168

Приложение…………………………………………………174

1. Классы С++