Содержание....8
Благодарности....24
Об авторе....24
Поддержка читателя....25
Ждем ваших отзывов!....25
ВВЕДЕНИЕ....26
Для кого написана эта книга....26
Структура книги....26
Соглашения, принятые в книге....27
Примеры кода....28
ЧАСТЬ I. Основы C++....30
ЗАНЯТИЕ 1. Первые шаги....32
Краткий экскурс в историю языка C++....33
Связь с языком С....33
Преимущества языка C++....33
Развитие стандарта C++....34
Кто использует программы, написанные на C++....34
Создание приложения C++....34
Этапы создания выполнимого файла....35
Анализ и устранение ошибок....35
Интегрированные среды разработки....35
Создание первого приложения на C++....36
Построение и запуск вашего первого приложения C++....37
Понятие ошибок компиляции....39
Что нового в C++....39
Резюме....40
Вопросы и ответы....40
Коллоквиум....41
Контрольные вопросы....41
Упражнения....41
ЗАНЯТИЕ 2. Структура программы на C++....42
Части программы Hello World....43
Директива препроцессора #include....43
Тело программы — функция main ()....44
Возврат значения....45
Концепция пространств имен....45
Комментарии в коде C++....47
Функции в C++....48
Ввод-вывод с использованием потоков std:: cin и std:: cout....51
Резюме....53
Вопросы и ответы....53
Коллоквиум....53
Контрольные вопросы....54
Упражнения....54
ЗАНЯТИЕ 3. Использование переменных и констант....56
Что такое переменная....57
Коротко о памяти и адресации....57
Объявление переменных для получения доступа и использования памяти....57
Объявление и инициализация нескольких переменных одного типа....59
Понятие области видимости переменной....60
Глобальные переменные....62
Соглашения об именовании....63
Распространенные типы переменных, поддерживаемые компилятором C++....64
Использование типа bool для хранения логических значений....65
Использование типа char для хранения символьных значений....65
Концепция знаковых и беззнаковых целых чисел....66
Знаковые целочисленные типы short, int, long и long long....67
Беззнаковые целочисленные типы unsigned short, unsigned int, unsigned long и unsigned long long....67
Избегайте переполнения, выбирая подходящие типы....68
Типы с плавающей точкой float и double....70
Определение размера переменной с использованием оператора sizeof....70
Запрет сужающего преобразования при использовании инициализации списком....72
Автоматический вывод типа с использованием auto....73
Использование ключевого слова typedef для замены типа....74
Что такое константа....75
Литеральные константы....75
Объявление переменных как констант с использованием ключевого слова const....76
Объявление констант с использованием ключевого слова constexpr....77
Перечисления....79
Определение констант с использованием директивы #def ine....81
Ключевые слова, недопустимые для использования в качестве имен переменных и констант....81
Резюме....82
Вопросы и ответы....83
Коллоквиум....85
Контрольные вопросы....85
Упражнения....85
ЗАНЯТИЕ 4. Массивы и строки....86
Что такое массив....87
Необходимость в массивах....87
Объявление и инициализация статических массивов....88
Как данные хранятся в массиве....89
Доступ к данным, хранимым в массиве....90
Изменение данных в массиве....91
Многомерные массивы....94
Объявление и инициализация многомерных массивов....94
Доступ к элементам многомерного массива....95
Динамические массивы....96
Строки символов в стиле С....98
Строки C++: использование std:: string....101
Резюме....102
Вопросы и ответы....103
Коллоквиум....104
Контрольные вопросы....104
Упражнения....104
ЗАНЯТИЕ 5. Выражения, инструкции и операторы....106
Выражения....107
Составные инструкции, или блоки....108
Использование операторов....108
Оператор присваивания (=)....108
Понятие 1- и г-значений....108
Операторы сложения (+), вычитания (-), умножения (*), деления (/) и деления по модулю (%)....109
Операторы инкремента (++) и декремента (—)....110
Что значит “постфиксный” и “префиксный”....110
Операторы равенства (==) и неравенства (! =)....112
Операторы сравнения....112
Логические операции НЕ, И, ИЛИ и ИСКЛЮЧАЮЩЕЕ ИЛИ....115
Использование логических операторов C++ !, && и | |....116
Побитовые операторы | и А....120
Побитовые операторы сдвига вправо (») и влево («)....122
Составные операторы присваивания....123
Использование оператора sizeof для определения объема памяти, занимаемого переменной....125
Приоритет операторов....126
Резюме....128
Вопросы и ответы....128
Коллоквиум....129
Контрольные вопросы....129
Упражнения....129
ЗАНЯТИЕ 6. Управление потоком выполнения программы....130
Условное программирование с использованием конструкции if... else....132
Условное выполнение нескольких инструкций....134
Вложенные инструкции if....135
Условная обработка с использованием конструкции switch-case....139
Тернарный условный оператор (?:)....142
Выполнение кода в циклах....143
Рудиментарный цикл с использованием инструкции goto....144
Цикл while....146
Цикл do...while....147
Цикл for....149
Цикл for для диапазона....152
Изменение поведения цикла с использованием операторов continue и break....154
Бесконечные циклы, которые никогда не заканчиваются....155
Управление бесконечными циклами....155
Программирование вложенных циклов....158
Использование вложенных циклов для перебора многомерного массива....159
Использование вложенных циклов для вычисления чисел Фибоначчи....161
Резюме....162
Вопросы и ответы....163
Коллоквиум....163
Контрольные вопросы....164
Упражнения....164
ЗАНЯТИЕ 7. Организация кода с помощью функций....166
Потребность в функциях....167
Что такое прототип функции....168
Что такое определение функции....169
Что такое вызов функции и аргументы....169
Создание функций с несколькими параметрами....170
Создание функций без параметров и возвращаемых значений....171
Параметры функций со значениями по умолчанию....172
Рекурсия — функция, вызывающая сама себя....174
Функции с несколькими операторами return....176
Использование функций для работы с данными различных видов....177
Перегрузка функций....178
Передача в функцию массива значений....179
Передача аргументов по ссылке....181
Как процессор обрабатывает вызовы функций....183
Встраиваемые функции....184
Автоматический вывод возвращаемого типа....185
Лямбда-функции....187
Резюме....188
Вопросы и ответы....189
Коллоквиум....189
Контрольные вопросы....189
Упражнения....190
ЗАНЯТИЕ 8. Указатели и ссылки....192
Что такое указатель....193
Объявление указателя....193
Определение адреса переменной с использованием оператора получения адреса &....194
Использование указателей для хранения адресов....195
Доступ к данным с использованием оператора разыменования *....198
Значение sizeof () для указателя....200
Динамическое распределение памяти....202
Использование new и delete для выделения и освобождения памяти....202
Указатели и операции инкремента и декремента....205
Использование ключевого слова const с указателями....208
Передача указателей в функции....209
Сходство между массивами и указателями....210
Наиболее распространенные ошибки при использовании указателей....213
Утечки памяти....213
Когда указатели указывают на недопустимые области памяти....214
Висячие (беспризорные, дикие) указатели....215
Проверка успешности запроса с использованием оператора new....216
Полезные советы по применению указателей....219
Что такое ссылка....219
Зачем нужны ссылки....221
Использование ключевого слова const со ссылками....222
Передача аргументов в функции по ссылке....222
Резюме....224
Вопросы и ответы....224
Коллоквиум....226
Контрольные вопросы....226
Упражнения....226
ЧАСТЬ II. Объектно-ориентированное программирование на C++....228
ЗАНЯТИЕ 9. Классы и объекты....230
Концепция классов и объектов....231
Объявление класса....231
Объект как экземпляр класса....232
Доступ к членам класса с использованием оператора точки (.)....233
Обращение к членам класса с использованием оператора указателя (->)....233
Ключевые слова public и private....235
Абстракция данных с помощью ключевого слова private....237
Конструкторы....238
Объявление и реализация конструктора....238
Когда и как использовать конструкторы....239
Перегрузка конструкторов....241
Класс без конструктора по умолчанию....243
Параметры конструктора со значениями по умолчанию....244
Конструкторы со списками инициализации....245
Деструктор....247
Объявление и реализация деструктора....247
Когда и как использовать деструкторы....248
Копирующий конструктор....251
Поверхностное копирование и связанные с ним проблемы....251
Глубокое копирование с использованием копирующего конструктора....253
Перемещающий конструктор улучшает производительность....258
Способы использования конструкторов и деструктора....259
Класс, который не разрешает себя копировать....259
Класс-синглтон, обеспечивающий наличие только одного экземпляра....260
Класс, запрещающий создание экземпляра в стеке....263
Применение конструкторов для преобразования типов....265
Указатель this....267
Размер класса....268
Чем структура отличается от класса....270
Объявление друзей класса....271
Специальный механизм хранения данных — union....273
Объявление объединения....273
Где используется объединение....274
Агрегатная инициализация классов и структур....276
constexpr с классами и объектами....279
Резюме....280
Вопросы и ответы....280
Коллоквиум....281
Контрольные вопросы....281
Упражнения....282
ЗАНЯТИЕ 10. Реализация наследования....284
Основы наследования....285
Наследование и порождение....285
Синтаксис наследования C++....287
Модификатор доступа protected....289
Инициализация базового класса — передача параметров базовому классу....291
Перекрытие методов базового класса в производном....294
Вызов перекрытых методов базового класса....296
Вызов методов базового класса в производном классе....297
Производный класс, скрывающий методы базового класса....299
Порядок конструирования....301
Порядок деструкции....301
Закрытое наследование....304
Защищенное наследование....306
Проблема срезки....309
Множественное наследование....310
Запрет наследования с помощью ключевого слова final....312
Резюме....314
Вопросы и ответы....314
Коллоквиум....314
Контрольные вопросы....315
Упражнения....315
ЗАНЯТИЕ 11. Полиморфизм....316
Основы полиморфизма....317
Потребность в полиморфном поведении....317
Полиморфное поведение, реализованное с помощью виртуальных функций....319
Необходимость виртуальных деструкторов....321
Как работают виртуальные функции. Понятие таблицы виртуальных функций....325
Абстрактные классы и чисто виртуальные функции....329
Использование виртуального наследования для решения проблемы ромба....331
Ключевое слово override для указания преднамеренного перекрытия....336
Использование ключевого слова final для предотвращения перекрытия функции....337
Виртуальные копирующие конструкторы?....337
Резюме....341
Вопросы и ответы....341
Коллоквиум....342
Контрольные вопросы....342
Упражнения....343
ЗАНЯТИЕ 12. Типы операторов и их перегрузка....344
Что такое операторы C++....345
Унарные операторы....346
Типы унарных операторов....346
Программирование унарного оператора инкремента или декремента....346
Создание операторов преобразования....349
Создание оператора разыменования (*) и оператора выбора члена (->)....352
Бинарные операторы....354
Типы бинарных операторов....354
Создание бинарных операторов сложения (а+b) и вычитания (а-Ь)....355
Реализация операторов сложения с присваиванием (+=) и вычитания с присваиванием (-=)....358
Перегрузка операторов равенства (=) и неравенства (! =)....360
Перегрузка операторов <, >, <= и >=....362
Перегрузка оператора копирующего присваивания (=)....364
Оператор индексации ([ ])....367
Оператор функции ()....370
Перемещающий конструктор и оператор перемещающего присваивания....371
Проблема излишнего копирования....371
Объявление перемещающих конструктора и оператора присваивания....372
Пользовательские литералы....377
Операторы, которые не могут быть перегружены....379
Резюме....380
Вопросы и ответы....380
Коллоквиум....381
Контрольные вопросы....381
Упражнения....381
ЗАНЯТИЕ 13. Операторы приведения....382
Потребность в приведении типов....383
Почему приведения в стиле С не нравятся некоторым программистам C++....384
Операторы приведения C++....384
Использование оператора static cast....385
Использование оператора dynamic cast и идентификация типа времени выполнения....386
Использование оператора reinterpret cast....389
Использование оператора const cast....390
Проблемы с операторами приведения C++....391
Резюме....393
Вопросы и ответы....393
Коллоквиум....393
Контрольные вопросы....394
Упражнения....394
ЗАНЯТИЕ 14. Введение в макросы и шаблоны....396
Препроцессор и компилятор....397
Использование #def ine для определения констант....397
Использование макроса для защиты от множественного включения....400
Использование директивы #define для написания макрофункции....401
Зачем все эти скобки?....403
Использование макроса assert для проверки выражений....403
Преимущества и недостатки использования макрофункций....405
Введение в шаблоны....406
Синтаксис объявления шаблона....407
Типы объявлений шаблонов....407
Шаблонные функции....408
Шаблоны и безопасность типов....410
Шаблонные классы....410
Объявление шаблонов с несколькими параметрами....411
Объявление шаблонов параметрами по умолчанию....412
Простой шаблон класса Holds Pair....412
Инстанцирование и специализация шаблона....414
Шаблонные классы и статические члены....416
Шаблоны с переменным количеством параметров (вариадические шаблоны)....417
Использование static assert для выполнения проверок времени компиляции....421
Использование шаблонов в практическом программировании на C++....422
Резюме....423
Вопросы и ответы....423
Коллоквиум....424
Контрольные вопросы....424
Упражнения....424
ЧАСТЬ III. Стандартная библиотека шаблонов....426
ЗАНЯТИЕ 15. Введение в стандартную библиотеку шаблонов....428
Контейнеры STL....429
Последовательные контейнеры....429
Ассоциативные контейнеры....430
Адаптеры контейнеров....432
Итераторы STL....432
Алгоритмы STL....433
Взаимодействие контейнеров и алгоритмов с использованием итераторов....433
Использование ключевого слова auto для определения типа....435
Выбор правильного контейнера....436
Классы строк библиотеки STL....438
Резюме....438
Вопросы и ответы....438
Коллоквиум....439
Контрольные вопросы....439
ЗАНЯТИЕ 16. Класс строки библиотеки STL....440
Потребность в классах обработки строк....441
Работа с классом строки STL....442
Создание экземпляров и копий строк STL....442
Доступ к символу в строке std:: string....444
Конкатенация строк....446
Поиск символа или подстроки в строке....447
Усечение строк STL....449
Обращение строки....451
Смена регистра символов....452
Реализация строки на базе шаблона STL....454
Оператор ,,f,s в std:: string в С++14....454
Резюме....455
Вопросы и ответы....456
Коллоквиум....456
Контрольные вопросы....456
Упражнения....456
ЗАНЯТИЕ 17. Классы динамических массивов библиотеки STL....458
Характеристики класса std:: vector....459
Типичные операции с вектором....459
Создание экземпляра вектора....459
Вставка элементов в конец вектора с помощью push back ()....461
Инициализация списком....462
Вставка элементов в определенную позицию с помощью insert ()....462
Доступ к элементам вектора с использованием семантики массива....465
Доступ к элементам вектора с использованием семантики указателя....466
Удаление элементов из вектора....467
Концепции размера и емкости....469
Класс deque библиотеки STL....471
Резюме....474
Вопросы и ответы....474
Коллоквиум....475
Контрольные вопросы....475
Упражнения....475
ЗАНЯТИЕ 18. Классы list И forward_list....476
Характеристики класса std:: list....477
Основные операции со списком....477
Инстанцирование класса std:: list....477
Вставка элементов в начало и в конец списка....479
Вставка в середину списка....480
Удаление элементов из списка....483
Обращение списка и сортировка его элементов....484
Обращение элементов списка с помощью list:: reverse ()....485
Сортировка элементов....486
Сортировка и удаление элементов из списка, который содержит объекты класса....488
Шаблон класса std:: forward list....491
Резюме....493
Вопросы и ответы....493
Коллоквиум....494
Контрольные вопросы....494
Упражнения....494
ЗАНЯТИЕ 19. Классы множеств STL....496
Введение в классы множеств STL....497
Фундаментальные операции с классами set и multiset....497
Инстанцирование объекта std:: set....498
Вставка элементов в множество и мультимножество....500
Поиск элементов в множестве и мультимножестве....501
Удаление элементов из множества и мультимножества....503
Преимущества и недостатки использования множеств и мультимножеств....508
Реализация хеш-множеств std: :unordered_set и std::unordered_multiset....508
Резюме....512
Вопросы и ответы....512
Коллоквиум....512
Контрольные вопросы....513
Упражнения....513
ЗАНЯТИЕ 20. Классы отображений библиотеки STL....514
Введение в классы отображений библиотеки STL....515
Фундаментальные операции с классами std: :map и std: :multimap....516
Инстанцирование классов std: :map и std: :multimap....516
Вставка элементов в map и multimap....518
Поиск элементов в отображении....520
Поиск элементов в мультиотображении STL....523
Удаление элементов из тар и multimap....523
Применение пользовательского предиката....525
Контейнер для пар “ключ-значение” на базе хеш-таблиц....529
Как работают хеш-таблицы....529
Использование unordered_map и unordered_multimap....530
Резюме....534
Вопросы и ответы....534
Коллоквиум....535
Контрольные вопросы....535
Упражнения....535
ЧАСТЬ IV. Углубляемся в STL....536
ЗАНЯТИЕ 21. Понятие о функциональных объектах....538
Концепция функциональных объектов и предикатов....539
Типичные приложения функциональных объектов....539
Унарные функции....539
Унарный предикат....544
Бинарные функции....546
Бинарный предикат....548
Резюме....551
Вопросы и ответы....551
Коллоквиум....551
Контрольные вопросы....551
Упражнения....552
ЗАНЯТИЕ 22. Лямбда-выражения языка С++11....554
Что такое лямбда-выражение....555
Как определить лямбда-выражение....556
Лямбда-выражение для унарной функции....556
Лямбда-выражение для унарного предиката....558
Лямбда-выражения с состоянием и списки захвата [... ]....559
Обобщенный синтаксис лямбда-выражений....561
Лямбда-выражение для бинарной функции....562
Лямбда-выражение для бинарного предиката....564
Резюме....566
Вопросы и ответы....566
Коллоквиум....567
Контрольные вопросы....567
Упражнения....567
ЗАНЯТИЕ 23. Алгоритмы библиотеки STL....568
Что такое алгоритмы STL....569
Классификация алгоритмов STL....569
Не изменяющие алгоритмы....569
Изменяющие алгоритмы....570
Использование алгоритмов STL....572
Поиск элементов по заданному значению или условию....572
Подсчет элементов с использованием значения или условия....574
Поиск элемента или диапазона в коллекции....576
Инициализация элементов в контейнере заданным значением....578
Использование алгоритма std:: generate () для инициализации значениями, генерируемыми во время выполнения....580
Обработка элементов диапазона с использованием алгоритма for each ()....582
Выполнение преобразований с помощью алгоритма std:: transform ()....584
Операции копирования и удаления....586
Замена значений и элементов с использованием условия....589
Сортировка, поиск в отсортированной коллекции и удаление дубликатов....591
Разделение диапазона....593
Вставка элементов в отсортированную коллекцию....595
Резюме....598
Вопросы и ответы....598
Коллоквиум....599
Контрольные вопросы....599
Упражнения....599
ЗАНЯТИЕ 24. Адаптивные контейнеры: стек и очередь....600
Поведенческие характеристики стеков и очередей....601
Стеки....601
Очереди....601
Использование класса STL stack....602
Создание экземпляра стека....602
Функции-члены класса stack....603
Вставка и извлечение с помощью методов push () и pop ()....604
Использование класса STL queue....606
Создание экземпляра очереди....606
Функции-члены класса queue....607
Вставка в конец и извлечение из начала очереди с использованием методов push () и pop ()....608
Использование класса STL priority queue....609
Создание экземпляра очереди с приоритетами....609
Функции-члены класса priority queue....611
Вставка в конец и извлечение из начала очереди с приоритетами с использованием методов push () и pop ()....612
Резюме....614
Вопросы и ответы....614
Коллоквиум....614
Контрольные вопросы....615
Упражнения....615
ЗАНЯТИЕ 25. Работа с битовыми флагами при использовании библиотеки STL....616
Класс bitset....617
Инстанцирование класса std: :bitset....617
Использование класса std: :bitset и его членов....618
Полезные операторы, предоставляемые классом std: :bitset....619
Методы класса std::bitset....619
Класс vector....622
Создание экземпляра класса vector....622
Функции и операторы класса vector....623
Резюме....624
Вопросы и ответы....624
Коллоквиум....625
Контрольные вопросы....625
Упражнения....625
ЧАСТЬ V. Сложные концепции C++....626
ЗАНЯТИЕ 26. Понятие интеллектуальных указателей....628
Что такое интеллектуальный указатель....629
Проблемы обычных указателей....629
Чем могут помочь интеллектуальные указатели....629
Как реализованы интеллектуальные указатели....630
Типы интеллектуальных указателей....631
Глубокое копирование....632
Механизм копирования при записи....634
Интеллектуальные указатели со счетчиком ссылок....634
Интеллектуальный указатель со списком ссылок....635
Деструктивное копирование....635
Использование интеллектуального указателя std: :unique_ptr....638
Популярные библиотеки интеллектуальных указателей....640
Резюме....640
Вопросы и ответы....640
Коллоквиум....641
Контрольные вопросы....641
Упражнения....641
ЗАНЯТИЕ 27. Применение потоков для ввода и вывода....642
Концепция потоков....643
Важнейшие классы и объекты потоков C++....644
Использование std:: cout для вывода форматированных данных на консоль....645
Изменение формата представления чисел....646
Выравнивание текста и установка ширины поля....648
Использование std:: cin для ввода....649
Использование std:: cin для ввода простых старых типов данных....649
Использование метода std:: cin:: get () для ввода в буфер char*....650
Использование std:: cin для ввода в переменную типа std:: string....651
Использование потока std:: f stream для работы с файлом....653
Открытие и закрытие файла с помощью методов open () и close ()....653
Создание и запись текстового файла с использованием метода open () и оператора «....654
Чтение текстового файла с использованием метода open () и оператора »....656
Запись и чтение из бинарного файла....657
Использование std:: stringstream для преобразования строк....659
Резюме....661
Вопросы и ответы....661
Коллоквиум....661
Контрольные вопросы....661
Упражнения....662
ЗАНЯТИЕ 28. Обработка исключений....664
Что такое исключение....665
Что вызывает исключения....665
Реализация безопасности в отношении исключений с помощью блоков try и catch....666
Использование блока catch (...) для обработки всех исключений....666
Обработка исключения конкретного типа....667
Генерация исключения с помощью оператора throw....669
Как работает обработка исключений....670
Класс std: exception....672
Пользовательский класс исключения, производный от std:: exception....673
Резюме....675
Вопросы и ответы....676
Коллоквиум....676
Контрольные вопросы....677
Упражнения....677
ЗАНЯТИЕ 29. Что дальше....678
Чем отличаются современные процессоры....679
Как лучше использовать несколько ядер....680
Что такое поток....680
Зачем создавать многопоточные приложения....681
Как потоки осуществляют транзакцию данных....682
Использование мьютексов и семафоров для синхронизации потоков....683
Проблемы, вызываемые многопоточностью....683
Как писать отличный код C++....684
C++17: что новенького....685
Инициализация в if и switch....685
Гарантия устранения копирования....686
Устранение накладных расходов выделения памяти с помощью std:: string view....687
std:: variant как безопасная с точки зрения типов альтернатива объединению....687
Условная компиляция с использованием if constexpr....688
Усовершенствованные лямбда-выражения....689
Автоматический вывод типа для конструкторов....689
template....689
Изучение C++ на этом не заканчивается....689
Документация в вебе....689
Сетевые сообщества и помощь....690
Резюме....690
Вопросы и ответы....690
Коллоквиум....691
Контрольные вопросы....691
ЧАСТЬ VI. Приложения....692
ПРИЛОЖЕНИЕ А. Двоичные и шестнадцатеричные числа....694
Десятичная система счисления....695
Двоичная система счисления....695
Почему компьютеры используют двоичные числа....696
Что такое биты и байты....696
Сколько байтов в килобайте....696
Шестнадцатеричная система счисления....697
Зачем нужна шестнадцатеричная система....697
Преобразование в различные системы счисления....698
Обобщенный процесс преобразования....698
Преобразование десятичного числа в двоичное....698
Преобразование десятичного числа в шестнадцатеричное....699
ПРИЛОЖЕНИЕ Б. Ключевые слова языка C++....700
ПРИЛОЖЕНИЕ В. Приоритет операторов....702
ПРИЛОЖЕНИЕ Г. Коды ASCII....704
Таблица ASCII отображаемых символов....705
ПРИЛОЖЕНИЕ Д. Ответы....708
Ответы к занятию 1....708
Контрольные вопросы....708
Упражнения....708
Ответы к занятию 2....709
Контрольные вопросы....709
Упражнения....709
Ответы к занятию 3....710
Контрольные вопросы....710
Упражнения....710
Ответы к занятию 4....711
Контрольные вопросы....711
Упражнения....712
Ответы к занятию 5....712
Контрольные вопросы....712
Упражнения....713
Ответы к занятию 6....713
Контрольные вопросы....713
Упражнения....714
Ответы к занятию 7....717
Контрольные вопросы....717
Упражнения....717
Ответы к занятию 8....718
Контрольные вопросы....718
Упражнения....718
Ответы к занятию 9....718
Контрольные вопросы....718
Упражнения....719
Ответы к занятию 10....720
Контрольные вопросы....720
Упражнения....720
Ответы к занятию 11....721
Контрольные вопросы....721
Упражнения....721
Ответы к занятию 12....723
Контрольные вопросы....723
Упражнения....723
Ответы к занятию 13....724
Контрольные вопросы....724
Упражнения....724
Ответы к занятию 14....725
Контрольные вопросы....725
Упражнения....725
Ответы к занятию 15....726
Контрольные вопросы....726
Ответы к занятию 16....727
Контрольные вопросы....727
Упражнения....727
Ответы к занятию 17....730
Контрольные вопросы....730
Упражнения....730
Ответы к занятию 18....733
Контрольные вопросы....733
Упражнения....734
Ответы к занятию 19....735
Контрольные вопросы....735
Упражнения....735
Ответы к занятию 20....738
Контрольные вопросы....738
Упражнения....739
Ответы к занятию 21....739
Контрольные вопросы....739
Упражнения....739
Ответы к занятию 22....741
Контрольные вопросы....741
Упражнения....741
Ответы к занятию 23....742
Контрольные вопросы....742
Упражнения....743
Ответы к занятию 24....744
Контрольные вопросы....744
Упражнения....744
Ответы к занятию 25....744
Контрольные вопросы....744
Упражнения....745
Ответы к занятию 26....745
Контрольные вопросы....745
Упражнения....745
Ответы к занятию 27....746
Контрольные вопросы....746
Упражнения....747
Ответы к занятию 28....747
Контрольные вопросы....747
Упражнения....747
Ответы к занятию 29....747
Контрольные вопросы....747
ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ....748
2011 и 2014 годы были особенно важными для языка C++. В то время как новый стандарт С++11 внес в язык программирования кардинальные изменения, новые ключевые слова и конструкции, повышающие эффективность программирования, C++14 скорее добавил завершающие штрихи к возможностям, внесенным в язык стандартом С++11.
Эта книга поможет вам изучить язык C++11 маленькими шагами. Она специально разделена на отдельные занятия, на которых основные принципы этого языка объектно-ориентированного программирования излагаются с практической точки зрения. Вы сможете овладеть языком С++11, уделяя каждому занятию всего один час.
Наилучший способ изучения языка программирования — его практическое применение, поэтому в книге очень много разнообразных примеров кода, анализируя которые, вы улучшите свои знания языка программирования C++. Эти фрагменты кода протестированы с использованием последних версий компиляторов, имеющихся на момент написания книги, а именно — компиляторов Microsoft Visual C++ и GNU C++, которые охватывают большинство возможностей С++14.