C++ за 24 часа

Издательство: Вильямс
Автор: Кейденхед Р., Либерти Д.
ISBN: 978-5-9908911-4-2, 978-0-672-33746-8
Страниц: 448
Язык: Русский
Год издания: 2019

 
 
 

Описание книгиСодержаниеДополнительно

Книги по IT. Руководство является шестым изданием, получившим известность во всем мире, бестселлера. Изложение материала ведется лаконично, дружелюбно и последовательно. Авторами предлагается читателю к изучению широкий спектр вопросов. Рассмотрены инсталляция, отладка программ, новшества языка и использование компилятора. Овладевая программированием на C++, читатель по мере прочтения книги постепенно расширяет свои знания в основных приемах и концепциях языка. В каждом занятии присутствуют дополнительные упражнения, замечания, вопросы и подсказки.

Об авторах 17
Введение 19
Для кого написана эта книга 19
Нужно ли изучить сначала язык C 19
Зачем изучать язык C++ 20
Соглашения, принятые в этой книге 20
Занятие 1. Первая программа 21
Использование С++ 21
Компилирование и редактирование связей исходного кода 22
Создание вашей первой программы 23
Резюме 25
Вопросы и ответы 25
Коллоквиум 26
Контрольные вопросы 26
Ответы 27
Упражнения 27
Занятие 2. Структура программы на языке C++ 29
Зачем нужен язык C++ 29
Стили программирования 30
Язык C++ и объектно-ориентированное программирование 31
Элементы программы 33
Директивы препроцессора 33
Построчный анализ 34
Комментарии 35
Функции 36
Использование аргументов функций 37
Резюме 39
Вопросы и ответы 39
Коллоквиум 40
Контрольные вопросы 40
Ответы 40
Упражнения 41
Занятие 3. Переменные и константы 43
Что такое переменная 43
Хранение переменной в памяти 43
Переменные со знаком и без знака 46
Типы переменных 46
Определение переменной 47
Присвоение значений переменным 49
Ключевое слово typedef 50
Константы 51
Перечисляемые константы 53
Ключевое слово auto 54
Резюме 56
Вопросы и ответы 57
Коллоквиум 57
Контрольные вопросы 57
Ответы 58
Упражнения 58
Занятие 4. Выражения, инструкции и операторы 59
Инструкции 59
Разделители 59
Блоки инструкций 60
Выражения 60
Операторы 61
Оператор присваивания 61
Математические операторы 62
Объединение операторов 62
Операторы инкремента и декремента 63
Префиксные и постфиксные операторы 63
Приоритет операторов 65
Операторы сравнения 67
Условные операторы if-else 68
Раздел else 68
Составной оператор if 69
Логические операторы 71
Логический оператор И 72
Логический оператор ИЛИ 72
Логический оператор НЕ 72
Приоритет операторов сравнения 73
Трюки с логическими выражениями 73
Резюме 74
Вопросы и ответы 74
Коллоквиум 75
Контрольные вопросы 75
Ответы 75
Упражнения 76
Занятие 5. Функции 77
Что такое функция? 77
Объявление и определение функций 77
Использование переменных в функциях 80
Локальные переменные 80
Глобальные переменные 81
Параметры функций 83
Возвращение значений из функций 84
Значения параметров, используемые по умолчанию 85
Перегрузка функций 88
Подставляемые функции 88
Возвращаемые значения с автоматически определяемым типом 89
Резюме 91
Вопросы и ответы 91
Коллоквиум 92
Контрольные вопросы 92
Ответы 92
Упражнения 93
Занятие 6. Управление потоком выполнения программы 95
Циклы 95
Инструкция while 95
Выход из цикла 97
Переход на следующую итерацию 98
Цикл do-while 99
Оператор цикла for 100
Более сложные инструкции for 102
Вложенные циклы 103
Оператор switch 104
Резюме 107
Вопросы и ответы 107
Коллоквиум 107
Контрольные вопросы 108
Ответы 108
Упражнения 108
Занятие 7. Хранение информации в массивах и строках 109
Что такое массив 109
Запись данных за пределами массива 111
Инициализация массивов 112
Многомерные массивы 112
Инициализация многомерных массивов 114
Немного о памяти 115
Массивы символов 115
Копирование строк 118
Чтение массивов с помощью цикла foreach 119
Резюме 120
Вопросы и ответы 120
Коллоквиум 121
Контрольные вопросы 121
Ответы 121
Упражнения 122
Занятие 8. Простые классы 123
Что такое тип 123
Создание новых типов 123
Классы и их члены 124
Объявление класса 125
Определение объекта 125
Доступ к членам класса 126
Закрытые и открытые члены класса 126
Реализация методов класса 127
Создание и удаление объектов 130
Конструкторы по умолчанию 131
Конструктор, предоставляемый компилятором 131
Резюме 134
Вопросы и ответы 134
Коллоквиум 135
Контрольные вопросы 135
Ответы 135
Упражнения 135
Занятие 9. Подробней о классах 137
Константные функции-члены 137
Интерфейс и реализация 138
Расположение объявлений классов и определений функций 138
Подставляемая реализация 138
Классы, содержащие другие классы как данные-члены 141
Резюме 146
Вопросы и ответы 146
Коллоквиум 147
Контрольные вопросы 147
Ответы 147
Упражнения 148
Занятие 10. Создание указателей 149
Указатели и их назначение 149
Хранение адреса в указателе 152
Оператор косвенного доступа 153
Указатели, адреса и переменные 154
Манипулирование данными при помощи указателей 155
Проверка адресов, хранящихся в указателе 156
Для чего нужны указатели? 158
Стек и динамическая память 158
Использование ключевого слова new 159
Использование ключевого слова delete 160
Предотвращение утечки памяти 162
Константа nullptr 163
Резюме 165
Вопросы и ответы 165
Коллоквиум 165
Контрольные вопросы 165
Ответы 166
Упражнения 166
Занятие 11. Подробней об указателях 167
Создание объектов в динамической памяти 167
Удаление объектов 167
Доступ к переменным-членам с помощью указателя 169
Данные-члены в динамической памяти 170
Указатель this 172
Потерянные, или висячие, указатели 173
Константные указатели 174
Константы как указатели и как функции-члены 175
Резюме 177
Вопросы и ответы 177
Коллоквиум 177
Контрольные вопросы 177
Ответы 178
Упражнения 178
Занятие 12. Создание ссылок 179
Что такое ссылка 179
Создание ссылок 179
Применение оператора взятия адреса к ссылкам 181
На что можно ссылаться 183
Нулевые указатели и ссылки 184
Передача функциям аргументов по ссылке 184
Передача указателей на параметры функции swap() 186
Реализация функции swap() для работы со ссылками 187
Заголовки и прототипы функций 189
Возвращение нескольких значений 189
Возвращение значений по ссылке 191
Резюме 192
Вопросы и ответы 193
Коллоквиум 193
Контрольные вопросы 193
Ответы на контрольные вопросы 194
Упражнения 194
Занятие 13. Подробнее о ссылках и указателях 195
Передача по ссылке как средство повышения эффективности 195
Передача константного указателя 198
Ссылки как альтернатива указателям 201
Когда использовать ссылки, а когда — указатели 203
Возвращение ссылки на объект в динамической памяти 204
Кто владеет указателем 206
Резюме 207
Вопросы и ответы 207
Коллоквиум 207
Контрольные вопросы 208
Ответы 208
Упражнения 208
Занятие 14. Дополнительные возможности функций 209
Перегрузка функций-членов 209
Использование значений по умолчанию 211
Инициализация объектов 213
Конструктор копий 214
Константные выражения времени компиляции 218
Резюме 219
Вопросы и ответы 220
Коллоквиум 220
Контрольные вопросы 221
Ответы 221
Упражнения 221
Занятие 15. Перегрузка операторов 223
Перегрузка операторов 223
Создание метода инкремента 225
Перегрузка постфиксных операторов 226
Перегрузка оператора сложения 228
Ограничения на перегрузку операторов 230
Оператор = 230
Операторы преобразования типа 233
Оператор int() 235
Резюме 236
Вопросы и ответы 237
Коллоквиум 237
Контрольные вопросы 237
Ответы 238
Упражнения 238
Занятие 16. Расширение классов с помощью наследования 239
Что такое наследование 239
Наследование и вывод 240
Животные и наследование 240
Синтаксис производных классов 241
Закрытый и защищенный уровень доступа 242
Конструкторы и деструкторы 245
Передача аргументов в конструкторы базового класса 247
Переопределение функций 252
Перегрузка или переопределение? 254
Сокрытие функции-члена базового класса 254
Вызов функции-члена базового класса 255
Резюме 257
Вопросы и ответы 257
Коллоквиум 257
Контрольные вопросы 258
Ответы 258
Упражнения 258
Занятие 17. Полиморфизм и производные классы 259
Реализация полиморфизма при помощи виртуальных функций-членов 259
Как работают виртуальные функции 264
Из ничего не выйдет ничего 265
Срезы 265
Виртуальные деструкторы 268
Виртуальные конструкторы копий 268
Цена виртуальных функций-членов 271
Резюме 272
Вопросы и ответы 272
Коллоквиум 272
Контрольные вопросы 272
Ответы 273
Упражнения 273
Занятие 18. Углубленный полиморфизм 275
Проблемы одиночного наследования 275
Абстрактные типы данных 279
Чисто виртуальные функции 283
Реализация чисто виртуальных функций 283
Сложная иерархия абстракций 287
Какие классы являются абстрактными? 291
Резюме 291
Вопросы и ответы 292
Коллоквиум 292
Контрольные вопросы 292
Ответы 292
Упражнения 293
Занятие 19. Хранение информации в связанных списках 295
Связанные списки и другие структуры 295
Применение связанных списков 296
Делегирование ответственности 297
Компоненты связанных списков 297
Связанные списки как объекты 305
Резюме 306
Вопросы и ответы 306
Коллоквиум 307
Контрольные вопросы 307
Ответы 307
Упражнения 307
Занятие 20. Специальные классы, функции и указатели 309
Статические данные-члены 309
Статические функции-члены 311
Агрегирование классов 313
Доступ к членам вложенного класса 319
Контроль доступа к вложенным членам 319
Копирование при передаче по значению или передача по ссылке 320
Дружественные классы и функции 320
Указатели на функции 321
Массивы указателей на функции 324
Передача указателей на функции другим функциям 326
Использование ключевого слова typedef с указателями на функции 329
Указатели на функции-члены 329
Массивы указателей на функции-члены 332
Резюме 334
Вопросы и ответы 334
Коллоквиум 335
Контрольные вопросы 335
Ответы 336
Упражнения 336
Занятие 21. Стандарт С++14 337
Современная версия C++ 337
Использование ключевого слова auto в качестве типа значения, возвращаемого функцией 338
Улучшенные числовые литералы 340
Ключевое слово constexpr 341
Лямбда-выражения 343
Резюме 345
Вопросы и ответы 345
Коллоквиум 346
Контрольные вопросы 346
Ответы 346
Упражнения 346
Занятие 22. Объектно-ориентированный анализ и проектирование 347
Цикл разработки 347
Моделирование системы сигнализации 348
Концептуализация 348
Анализ и требования 349
Высоко- и низкоуровневое проектирование 349
Другие объекты 350
Разработка классов 350
Новые классы 352
Циклы событий 352
Система PostMaster: анализ ситуаций 355
Семь раз отмерь, один раз отрежь 355
Разделяй и властвуй 356
Формат сообщений 357
Предварительное проектирование классов 357
Корневые и некорневые иерархии 358
Проектирование интерфейсов 360
Создание прототипа 362
Правило 80/80 362
Разработка класса PostMasterMessage 363
Интерфейс прикладных программ 363
Программирование в больших группах 365
Продолжение проекта 365
Работа с отладочной программой 366
Резюме 373
Вопросы и ответы 374
Коллоквиум 374
Контрольные вопросы 374
Ответы 374
Упражнения 375
Занятие 23. Создание шаблонов .377
Что такое шаблоны? 377
Экземпляры шаблона 378
Определение шаблона 378
Использование экземпляров шаблона 385
Резюме 390
Вопросы и ответы 391
Коллоквиум 391
Контрольные вопросы 391
Ответы 392
Упражнения 392
Занятие 24. Исключения, обработка ошибок и другое 393
Опечатки, ошибки, недоработки и просчеты 393
Реакция на непредвиденные ситуации 394
Исключения 395
Применение исключений 395
Применение блоков try и разделов catch 399
Обработка исключений 399
Применение нескольких обработчиков catch 400
Перехват по ссылке и полиморфизм 400
Профессиональный стиль программирования 405
Фигурные скобки 405
Длинные строки 406
Инструкции switch 406
Текст программы 407
Имена идентификаторов 407
Правописание и регистр символов имен 408
Комментарии 408
Доступ 409
Определения классов 410
Подключение файлов 410
Ключевое слово const 410
Резюме 410
Вопросы и ответы 411
Коллоквиум 411
Контрольные вопросы 411
Ответы 412
Упражнения 412
Приложение A. Двоичные и шестнадцатеричные числа 413
Другие системы счисления 414
Основания систем счисления 414
Двоичная система счисления 416
Почему основание 2? 416
Биты, байты и полубайты 417
Что такое килобайт? 417
Двоичные числа 417
Шестнадцатеричная система счисления 418
Приложение Б. Словарь терминов 421
Приложение В. Веб-сайт книги 431
Приложение Г. Работа с компилятором MinGW C++ для Windows 433
Загрузка пакета MinGW-w64 433
Настройка переменной среды окружения Path 435
Тестирование инсталляции 437
Открытие папок в системе MS-DOS 438
Создание папок в системе MS-DOS 439
Выполнение программ в системе MS-DOS 440
Предметный указатель 443

Об авторах.
Роджерс Кейденхед — писатель, программист и разработчик веб-приложений, написавший более 25 книг на темы, связанные с Интернетом, в частности Sams Teach Yourself Java in 21 Days и Absolute Beginner’s Guide to Minecraft Mods Programming. Он регулярно публикуется на веб-сайте Drudge Retort, а также на других веб-сайтах, которые посещают более 22 млн человек в год.
Джесс Либерти — автор многочисленных книг по разработке программного обеспечения, включая бестселлеры по C++ и .NET. Он является президентом компании Liberty Associates, Inc., занимающейся программированием по индивидуальным заказам, консультациями и обучением.

Основные темы книги
инсталляция и использование компилятора C++ для Windows, Mac OS X или Linux
создание объектно-ориентированных программ на С++
основные концепции языка C++, такие как функции и классы
расширение функциональных возможностей с помощью шаблонов и лямбда-выражений
отладка программ и создание надежного кода
исключения и методы обработки ошибок
новые функциональные возможности стандарта C++14, новейшей версии языка
создание и использование шаблонов
управление потоком выполнения программы с помощью циклов
хранение информации в массивах и строках
объявление и использование указателей
перегрузка операторов
расширение классов с помощью наследования
полиморфизм и производные классы
методы объектно-ориентированного анализа и проектирования



Сайт книги
Оригинальное издание книги
Отрывок из книги
Коды программ к книге
Книга на amazon
ссылка