Яшавант Канеткар | С++ – это просто. 3-е издание (2023) [PDF, EPUB]
Автор: Яшавант Канеткар
Перевод: Сергей Гусев
Издательство: БХВ-Петербург
ISBN: 978-5-9775-1194-0
Жанр: Объектно-ориентированное программирование (ООП), Программирование, С++
Формат: PDF, EPUB
Качество: Изначально электронное (ebook)
Иллюстрации: Черно-белые
Описание:Доступно изложены основы синтаксиса языка C++ и объектно-ориентированного программирования. Описаны функции С++, подробно рассмотрены классы и объекты, инкапсуляция, наследование, полиморфизм, система ввода-вывода С++. Даны советы и рекомендации по разработке современных приложений. Приведены примеры использования шаблонов и библиотеки стандартных шаблонов, описана обработка исключений. Отдельная глава посвящена расширенным возможностям C++.
Оглавление:
Об авторе ................................................................................................................................ 13
Благодарности ......................................................................................................................... 15
Предисловие к третьему изданию .............................................................................................. 17
Предисловие к первому изданию ............................................................................................... 19
Глава 1. Введение в ООП .......................................................................................................... 21
Истоки..................................................................................................................................... 23
Структурное программирование ................................................................................................ 24
Объектно-ориентированное программирование .......................................................................... 26
Характеристики объектно-ориентированных языков ................................................................... 28
Объекты .................................................................................................................................. 28
Классы .................................................................................................................................... 29
Инкапсуляция ......................................................................................................................... 29
Скрытие данных....................................................................................................................... 29
Наследование ......................................................................................................................... 30
Полиморфизм ......................................................................................................................... 31
Отношения включения ............................................................................................................ 31
Шаблоны................................................................................................................................. 32
Обработка исключений ............................................................................................................ 32
Многократное использование ................................................................................................... 32
Упражнения.................................................................................................................................... 33
Важное ............................................................................................................................................ 35
Глава 2. Переходим на C++ ....................................................................................................... 37
Комментарии .................................................................................................................................. 39
Ввод и вывод в C++ ....................................................................................................................... 40
Динамическое объявление переменных ...................................................................................... 42
Динамическая инициализация ...................................................................................................... 43
Вывод типов ................................................................................................................................... 43
Синтаксис структуры (struct), объединения (union) и перечисления (enum) ................................. 43
Неименованные объединения и перечисления ........................................................................... 44
Приведение типов .......................................................................................................................... 45
Пустой указатель (void) ................................................................................................................. 46
Оператор :: ...................................................................................................................................... 46
Ссылки ............................................................................................................................................ 47
Типы обращений к функциям....................................................................................................... 48
Возвращение значения по ссылке ................................................................................................ 51
Спецификатор const ....................................................................................................................... 52
Const-указатели ...................................................................................................................... 53
Const-ссылки .......................................................................................................................... 54
Возврат значений const-переменных ...................................................................................... 57
Функции-члены типа const .................................................................................................... 57
Логический тип данных (bool) ..................................................................................................... 58
Упражнения.................................................................................................................................... 59
Важное ............................................................................................................................................ 65
Глава 3. Функции ................................................................................................................... 69
Строгая проверка типов ................................................................................................................ 71
Исходные значения для аргументов функции ............................................................................ 72
Перегрузка функции ...................................................................................................................... 73
Разница в типе возвращаемого значения ................................................................................ 74
Можно ли задать разные типы данных при помощи typedef? ..................................................... 75
Можно ли задать разные типы данных при помощи const? ........................................................ 75
Разные задачи, одно имя ....................................................................................................... 76
Перегрузка операторов.................................................................................................................. 76
FAQ по перегрузке операторов ............................................................................................ 79
Встраиваемые функции ................................................................................................................. 79
Зачем полагаться на компилятор? ........................................................................................ 80
А где гарантия? ...................................................................................................................... 80
Когда ими пользоваться? ...................................................................................................... 81
Новый синтаксис возвращаемого типа ........................................................................................ 81
Функции instance, static, virtual и friend ...................................................................................... 81
Упражнения.................................................................................................................................... 82
Важное ............................................................................................................................................ 85
Глава 4. Классы и объекты ............................................................................................................ 87
Структуры и классы ...................................................................................................................... 89
Классы и конструкторы ................................................................................................................ 92
Деструкторы ................................................................................................................................... 94
Класс Complex ................................................................................................................................ 95
Указатель this ................................................................................................................................. 97
Перегрузка унарных операторов .................................................................................................. 98
Объекты и память ........................................................................................................................ 100
Еще раз о структурах и классах ................................................................................................. 101
Идеальная организация программы ........................................................................................... 102
Упражнения.................................................................................................................................. 106
Важное .......................................................................................................................................... 112
Глава 5. Премудрости классов .................................................................................................. 115
Статическое и динамическое выделение памяти ...................................................................... 117
Выделение памяти для массивов и структур .................................................................... 118
Выделение памяти для объектов ........................................................................................ 120
Статические члены класса .......................................................................................................... 122
Универсальный спецификатор const .......................................................................................... 124
Перегруженный оператор присваивания и конструктор копирования................................... 126
Преобразование данных .............................................................................................................. 129
Преобразование между встроенными типами .................................................................. 129
Преобразование между встроенными и пользовательскими типами ................................... 130
Преобразование между различными пользовательскими типами данных ............................ 132
Процедура преобразования в исходном объекте .............................................................. 132
Процедура преобразования в целевом объекте ................................................................. 134
Упражнения.................................................................................................................................. 137
Важное .......................................................................................................................................... 139
Глава 6. Наследование .................................................................................................................. 141
Наследование ............................................................................................................................... 143
Еще один пример наследования ................................................................................................. 147
Варианты применения наследования ......................................................................................... 149
Наследование и конструкторы ................................................................................................... 151
Виды наследования ..................................................................................................................... 154
Одиночное наследование .................................................................................................... 154
Многоуровневое наследование .......................................................................................... 155
Множественное наследование ............................................................................................ 156
Предупреждение .......................................................................................................................... 157
Поэтапная разработка.................................................................................................................. 158
Упражнения.................................................................................................................................. 158
Важное .......................................................................................................................................... 160
Глава 7. Полиморфизм ................................................................................................................. 163
Виртуальная функция ................................................................................................................. 165
Чистая виртуальная функция...................................................................................................... 167
Абстрактный класс ...................................................................................................................... 168
Связывание функций ................................................................................................................... 168
Анатомия виртуальных функций .................................................................................................. 170
Для чего применять виртуальные функции?.................................................................................. 177
Срезание объекта ...................................................................................................................... 177
Виртуальные деструкторы .......................................................................................................... 179
Вызов виртуальных функций из конструкторов/деструкторов ....................................................... 181
Виртуальные базовые классы ..................................................................................................... 181
Упражнения.................................................................................................................................. 183
Важное ........................................................................................................................................ 184
Глава 8. Система ввода-вывода в C++ ....................................................................................... 187
Требования к системе ввода-вывода .......................................................................................... 189
Решение с использованием потоков в C++ ............................................................................... 190
Предопределенные потоковые объекты .................................................................................... 191
Библиотека iostream .................................................................................................................... 191
Класс istream ................................................................................................................................ 192
Класс ostream ............................................................................................................................... 194
Вывод символов в кодировке Unicode .............................................................................................. 195
Класс iostream .............................................................................................................................. 196
Манипуляторы потока ................................................................................................................. 196
Пользовательские манипуляторы .............................................................................................. 199
Пользовательские манипуляторы с аргументами ........................................................................ 200
Работа с потоками ввода-вывода в файл ................................................................................... 202
Символьный ввод-вывод ............................................................................................................. 203
Открытие файла ................................................................................................................... 203
Чтение данных ..................................................................................................................... 204
Обнаружение конца файла (EOF) ........................................................................................... 204
Закрытие файла .................................................................................................................... 204
Программа копирования файлов ................................................................................................ 204
Ввод-вывод строк ........................................................................................................................ 205
Ввод-вывод записей .................................................................................................................... 206
Прямой доступ ............................................................................................................................. 208
Режимы открытия файла ............................................................................................................. 210
Строковые потоки ....................................................................................................................... 211
Работа с istrstream ................................................................................................................ 212
Ввод-вывод объектов .................................................................................................................. 213
Сериализация ............................................................................................................................... 214
Обработка ошибок ввода-вывода ............................................................................................... 215
Взаимодействие с файловой системой ...................................................................................... 217
Упражнения.................................................................................................................................. 220
Важное .......................................................................................................................................... 222
Глава 9. Расширенные возможности C++ ..................................................................................... 225
Отношения включения ................................................................................................................ 227
Дружественные (friend) функции и классы ............................................................................... 229
Еще одно применение дружественной функции ...................................................................... 231
Предупреждение .......................................................................................................................... 234
Ключевое слово explicit ............................................................................................................... 234
Ключевое слово mutable .............................................................................................................. 236
Пространство имен ...................................................................................................................... 237
Способы применения пространства имен ................................................................................. 240
Использование оператора разрешения контекста ..................................................................... 240
Ключевое слово using ............................................................................................................ 241
Динамическая идентификация типа (RTTI) .............................................................................. 242
Приведение типов в C++ ........................................................................................................ 244
static_cast .............................................................................................................................. 245
dynamic_cast ......................................................................................................................... 246
const_cast .............................................................................................................................. 248
reinterpret_cast ..................................................................................................................... 248
Предупреждение .................................................................................................................. 249
Указатели на члены классов ....................................................................................................... 249
Упражнения.................................................................................................................................. 253
Важное ...................................................................................................................................... 254
Глава 10. Шаблоны ............................................................................................................... 257
Шаблоны функций ...................................................................................................................... 259
Что происходит во время компиляции?.................................................................................... 261
Шаблоны функций для пользовательских типов ...................................................................... 261
Еще одна шаблонная функция ................................................................................................... 262
Явная специализация обобщенной функции............................................................................. 264
Функция с набором обобщенных типов .................................................................................... 264
Шаблоны и макросы .................................................................................................................... 265
Сортировка на основе шаблона .................................................................................................. 266
Шаблоны классов ........................................................................................................................ 267
Шаблон класса связного списка ................................................................................................. 271
Полезные советы по шаблонам .................................................................................................. 273
Вариативные шаблоны ................................................................................................................ 275
Области применения шаблонов ................................................................................................. 276
Упражнения.............................................................................................................................. 276
Важное ..................................................................................................................................... 278
Глава 11. Обработка исключений ............................................................................................... 279
Обработка исключений в C++ .................................................................................................... 281
Работа с библиотечными классами исключений ........................................................................... 284
Библиотечные исключения при создании очереди ....................................................................... 286
Еще один пример ...................................................................................................................... 288
Работа с пользовательскими классами исключений ...................................................................... 290
Полезные советы ......................................................................................................................... 292
Спецификация исключений ........................................................................................................ 293
Необработанные исключения ..................................................................................................... 294
Интеллектуальные указатели и динамические контейнеры ........................................................... 295
Упражнения.................................................................................................................................. 297
Важное .......................................................................................................................................... 298
Глава 12. Стандартная библиотека шаблонов ............................................................................ 301
Стандартная библиотека шаблонов ........................................................................................... 303
Компоненты STL ......................................................................................................................... 304
Контейнеры .......................................................................................................................... 304
Итераторы ............................................................................................................................. 305
Алгоритмы ............................................................................................................................ 306
Вектор (vector) ............................................................................................................................. 307
Другие операции ...................................................................................................................... 308
Вектор объектов класса Point ..................................................................................................... 309
Список (list) .................................................................................................................................. 311
Множество (set) и мультимножество (multi-set) ................................................................................ 313
Отображение (map) и мультиотображение (multi-map) ..................................................................... 317
Стек (stack) ................................................................................................................................... 319
Очередь (queue) ............................................................................................................................ 320
Объект-функция ........................................................................................................................... 322
Упражнения.................................................................................................................................. 323
Важное .......................................................................................................................................... 324
Предметный указатель .................................................................................................................... 327
Скриншоты:
Время раздачи: с 10 до 20 (минимум до появления первых 3-5 скачавших)