СОДЕРЖАНИЕ....2
ПРЕДИСЛОВИЕ....15
Метод «Снизу-Вверх»....15
Метод «Сверху-Вниз»....16
Какой подход выбрать?....16
Урок №1. Введение в программирование....18
Машинный язык....18
Язык ассемблера....19
Высокоуровневые языки программирования....19
Преимущества высокоуровневых языков программирования....20
Урок №2. Введение в языки программирования С и С++....22
Язык C++....23
Философия С и С++....23
Урок №3. Введение в разработку программного обеспечения....24
Шаг №1: Определите проблему, которую хотели бы решить....24
Шаг №2: Определитесь, как вы собираетесь решить эту проблему....25
Шаг №3: Напишите программу....26
Шаг №4: Компиляция....27
Шаг №5: Линкинг (связывание объектных файлов)....27
Шаг №6: Тестирование и отладка....29
Урок №4. Установка IDE (Интегрированной Среды Разработки)....30
IDE для пользователей Windows....30
IDE для пользователей Linux/Windows....31
IDE для пользователей macOS....33
Веб-компиляторы....33
Урок №5. Компиляция вашей первой программы....34
Теория....34
Пользователям Visual Studio....35
Пользователям Code::Blocks....38
Пользователям командной строки....41
Пользователям веб-компиляторов....42
Пользователям других IDE....42
Если компиляция прошла неудачно (a.k.a. "О Боже, что-то пошло не так!")....43
Заключение....43
Урок №6. Режимы конфигурации «Debug» и «Release»....44
Переключение между режимами "Debug" и "Release" в Visual Studio....44
Переключение между режимами "Debug" и "Release" в Code::Blocks....45
Заключение....45
Урок №7. Конфигурация компилятора: Расширения компилятора....46
Отключение расширений компилятора....47
Урок №8. Конфигурация компилятора: Уровни предупреждений и ошибки....50
Изменение уровня предупреждений....51
Обработка предупреждений как ошибок....54
Урок №9. Конфигурация компилятора: Выбор стандарта языка С++....58
Кодовые имена для версий языка С++....58
Установка стандарта языка С++ в Visual Studio....58
Установка стандарта языка C++ в Code::Blocks....60
Установка стандарта языка С++ в GCC/G++....62
Тестирование вашего компилятора....62
Урок №10. Решения самых распространенных проблем....64
Проблема №1....64
Проблема №2....64
Проблема №3....65
Проблема №4....65
Проблема №5....66
Проблема №6....66
Проблема №7....67
Проблема №8....68
Проблема №9....68
Проблема №10....68
У меня есть другая проблема, с которой я не могу разобраться. Как и где я могу получить ответ?....69
Урок №11. Структура программ....70
Стейтменты....70
Выражения....70
Функции....71
Библиотеки....71
Пример простой программы....72
Синтаксис и синтаксические ошибки....73
Тест....73
Урок №12. Комментарии....75
Однострочные комментарии....75
Многострочные комментарии....75
Как правильно писать комментарии?....76
Закомментировать код....78
Урок №13. Переменные, Инициализация и Присваивание....81
Переменные....81
l-values и r-values....82
Инициализация vs. Присваивание....83
Неинициализированные переменные....83
Тест....84
Урок №14. cout, cin и endl....86
Объект std::cout....86
Объект std::endl....87
Объект std::cin....87
std::cin, std::cout, << и >>....88
Урок №15. Функции и оператор возврата return....89
Функции....89
Возвращаемые значения....90
Тип возврата void....91
Возврат значений функцией main()....92
Еще о возвращаемых значениях....93
Повторное использование функций....93
Вложенные функции....95
Тест....95
Урок №16. Параметры и аргументы функций....99
Как работают параметры и аргументы функций?....100
Как работают параметры и возвращаемые значения функций?....100
Еще примеры....101
Тест....103
Урок №17. Почему функции – полезны, и как их эффективно использовать?....105
Эффективное использование функций....106
Урок №18. Локальная область видимости....107
Локальная область видимости предотвращает возникновение конфликтов имен....108
Тест....109
Урок №19. Ключевые слова и идентификаторы....110
Идентификаторы....111
Тест....114
Урок №20. Операторы....115
Литералы....115
Операторы....115
Заключение....116
Урок №21. Базовое форматирование кода....117
Основные рекомендации....118
Урок №22. Прототип функции и Предварительное объявление....121
Прототипы функций и Предварительное объявление....122
Предварительно объявили, но не определили....123
Объявление vs. Определение....124
Тест....124
Урок №23. Многофайловые программы....127
Многофайловые проекты в Visual Studio....127
Многофайловые проекты в Code::Blocks....129
Многофайловые проекты в GCC/G++....131
Пример многофайловой программы....131
Что-то пошло не так!....132
Тест....134
Урок №24. Заголовочные файлы....136
Заголовочные файлы из Стандартной библиотеки C++....136
Пишем свои собственные заголовочные файлы....137
Угловые скобки (<>) vs. Двойные кавычки ("")....139
Почему iostream пишется без окончания .h?....140
Можно ли записывать определения в заголовочных файлах?....140
Советы....141
Урок №25. Директивы препроцессора....142
Директива #include....142
Директива #define....142
Макросы-объекты с текст_замена....143
Макросы-объекты без текст_замена....143
Условная компиляция....144
Область видимости директивы #define....145
Урок №26. Header guards и #pragma once....147
Header guards....149
#pragma once....150
Тест....151
Урок №27. Конфликт имен и std namespace....152
Пространство имен....153
Оператор разрешения области видимости ::....154
Урок №28. Разработка ваших первых программ....155
Шаг №1: Определите проблему....155
Шаг №2: Определите свой инструментарий, цели и план бэкапа....155
Шаг №3: Разбейте проблему на части....156
Шаг №4: Определите последовательность событий....158
Шаг №5: Определите данные ввода и данные вывода на каждом этапе....159
Шаг №6: Позаботьтесь о деталях....160
Шаг №7: Соедините данные ввода с данными вывода в программе....160
Советы....162
Урок №29. Отладка программ: степпинг и точки останова....164
Типы ошибок....164
Отладчик....165
Степпинг....166
Команда "Шаг с заходом"....166
Команда "Шаг с обходом"....170
Команда "Шаг с выходом"....172
Команда "Выполнить до текущей позиции"....174
Команда "Продолжить"....175
Точки останова....175
Урок №30. Отладка программ: стек вызовов и отслеживание переменных....178
Отслеживание переменных....178
Окно просмотра....182
Стек вызовов....185
Заключение....188
Глава №1. Итоговый тест....189
Задание №1....189
Задание №2....189
Задание №3....189
Урок №31. Инициализация, присваивание и объявление переменных....190
Адреса и переменные....190
Фундаментальные типы данных в С++....191
Объявление переменных....191
Инициализация переменных....192
uniform-инициализация....192
Присваивание переменных....193
Объявление нескольких переменных....193
Где объявлять переменные?....194
Урок №32. Тип данных void....197
Урок №33. Размер типов данных....198
Размер основных типов данных в C++....200
Урок №34. Целочисленные типы данных: short, int и long....203
Объявление целочисленных переменных....203
Диапазоны значений и знак целочисленных типов данных....204
Что используется по умолчанию: signed или unsigned?....206
Переполнение....207
Примеры переполнения....208
Деление целочисленных переменных....210
Урок №35. Фиксированный размер целочисленных типов данных....212
Почему размер целочисленных типов не является фиксированным?....212
Разве это не глупо?....212
Целочисленные типы фиксированного размера....212
Предупреждение насчет std::int8_t и std::uint8_t....213
Недостатки целочисленных типов фиксированного размера....214
Спор насчет unsigned....214
Урок №36. Типы данных с плавающей точкой: float, double и long double....216
Экспоненциальная запись....217
Конвертация чисел в экспоненциальную запись....218
Точность и диапазон типов с плавающей точкой....218
Ошибки округления....221
nan и inf....223
Заключение....223
Тест....224
Урок №37. Логический тип данных bool....225
Переменные логического типа данных....225
Использование логического типа данных в ветвлениях if....226
Возвращаемые значения логического типа данных....228
Тест....230
Урок №38. Символьный тип данных char....231
Тип данных char....231
Вывод символов....234
Оператор static_cast....234
Ввод символов....235
Размер, диапазон и знак типа сhar....237
Управляющие символы....237
Что использовать: '\n' или std::endl?....239
Другие символьные типы: wchar_t, char16_t и char32_t....240
В чём разница между одинарными и двойными кавычками при использовании с символами?....240
Урок №39. Литералы и магические числа....241
Литеральные константы....241
Литералы в восьмеричной и шестнадцатеричной системах счисления....242
Бинарные литералы и разделитель цифр в C++14....245
Магические числа. Что с ними не так?....245
Урок №40. const, constexpr и символьные константы....247
Константы....247
Время компиляции и время выполнения....248
Спецификатор constexpr....248
Имена констант....249
Символьные константы....249
Использование символьных констант в программе....251
Глава №2. Итоговый тест....253
Теория....253
Задание №1....253
Задание №2....253
Задание №3....254
Задание №4....254
Урок №41. Приоритет операций и правила ассоциативности....256
Таблица приоритета и ассоциативности операций....256
Как возвести число в степень в C++?....262
Тест....263
Урок №42. Арифметические операторы....264
Бинарные арифметические операторы....264
Деление целых чисел и чисел типа с плавающей точкой....265
Использование оператора static_cast в операциях деления....265
Деление с остатком....266
Отрицательные числа в операциях деления до C++11....267
Арифметические операторы присваивания....267
Где оператор возведения в степень?....268
Тест....269
Задание №1....269
Задание №2....269
Урок №43. Инкремент, декремент и побочные эффекты....270
Побочные эффекты....271
Урок №44. Условный тернарный оператор, оператор sizeof и Запятая....274
Оператор Запятая....274
Условный тернарный оператор....275
Условный тернарный оператор вычисляется как выражение....278
Урок №45. Операторы сравнения....279
Сравнение чисел типа с плавающей точкой....280
Урок №46. Логические операторы: И, ИЛИ, НЕ....285
Логический оператор НЕ....286
Логический оператор ИЛИ....288
Логический оператор И....289
Короткий цикл вычислений....290
Использование логических операторов И/ИЛИ....290
Законы Де Моргана....291
А где же побитовое исключающее ИЛИ (XOR)?....291
Тест....292
Урок №47. Конвертация чисел из двоичной системы в десятичную и наоборот....293
Представление чисел в двоичной системе....293
Конвертация чисел из двоичной системы в десятичную....294
Способ №1: Конвертация чисел из десятичной системы в двоичную....295
Способ №2: Конвертация чисел из десятичной системы в двоичную....296
Еще один пример....297
Сложение двоичных чисел....298
Числа signed и метод "two’s complement"....299
Почему так важен тип данных?....301
Тест....301
Задание №1....301
Задание №2....301
Задание №3....302
Задание №4....302
Задание №5....302
Задание №6....302
Урок №48. Побитовые операторы....303
Зачем нужны побитовые операторы?....303
Побитовый сдвиг влево (<<) и побитовый сдвиг вправо (>>)....304
Что!? Разве операторы << и >> используются не для вывода и ввода данных?....305
Побитовый оператор НЕ....306
Побитовые операторы И, ИЛИ и исключающее ИЛИ (XOR)....306
Побитовые операторы присваивания....308
Заключение....309
Тест....309
Задание №1....309
Задание №2....309
Задание №3....309
Задание №4....309
Урок №49. Битовые флаги и битовые маски....310
Битовые флаги....310
Почему битовые флаги полезны?....312
Введение в std::bitset....314
Битовые маски....316
Пример с RGBA....316
Заключение....318
Тест....319
Задание №1....319
Задание №2....319
Задание №3....319
Задание №4....319
Глава №3. Итоговый тест....320
Теория....320
Тест....320
Задание №1....320
Задание №2....321
Задание №3....321
Задание №4....321
Задание №5....321
Урок №50. Блоки стейтментов (составные операторы)....322
Вложенные блоки....322
Блоки и операторы if....323
Количество уровней вложенности блоков....324
Заключение....324
Урок №51. Локальные переменные, область видимости и продолжительность жизни....325
Сокрытие имен....327
Область видимости переменных....329
Параметры функций....330
Заключение....330
Тест....330
Задание №1....330
Задание №2....331
Урок №52. Глобальные переменные....332
Определение глобальных переменных....332
Ключевые слова static и extern....333
Предварительные объявления переменных с использованием extern....334
Связи функций....336
Файловая область видимости vs. Глобальная область видимости....336
Глобальные символьные константы....337
Предостережение о (неконстантных) глобальных переменных....338
Заключение....338
Тест....339
Урок №53. Почему глобальные переменные – зло?....340
Почему (неконстантные) глобальные переменные — это зло?....340
В чём плюсы использования (неконстантных) глобальных переменных?....342
Как защититься от "глобального разрушения"?....343
Шутка....345
Заключение....345
Урок №54. Статические переменные....346
Тест....348
Урок №55. Связи, область видимости и продолжительность жизни....349
Область видимости....349
Продолжительность жизни....349
Связи....350
Резюмируем....351
Предварительные объявления....352
Урок №56. Пространства имен....353
Что такое пространство имен?....354
Доступ к пространству имен через оператор разрешения области видимости (::)....355
Пространства имен с одинаковыми названиями....356
Псевдонимы и вложенные пространства имен....357
Урок №57. using-стейтменты....359
Использование "using-объявления"....359
Использование "using-директивы"....359
Пример конфликта c "using-директивой"....360
Области видимости "using-объявления" и "using-директивы"....361
Отмена/замена using-стейтментов....361
Урок №58. Неявное преобразование типов данных....363
Преобразование типов....363
Неявное преобразование типов....364
Числовое расширение....364
Числовые конверсии....365
Обработка арифметических выражений....367
Урок №59. Явное преобразование типов данных....370
Операторы явного преобразования типов данных....370
Конвертация C-style....371
Оператор static_cast....371
Использование операторов явного преобразования в неявном преобразовании....372
Заключение....373
Тест....373
Урок №60. Введение в std::string....374
Тип данных string....374
Ввод/вывод строк....375
Использование std::getline()....376
Использование std::getline() c std::cin....376
Добавление строк....378
Длина строк....378
Тест....379
Урок №61. Перечисления....380
Перечисляемые типы....380
Имена перечислений....380
Значения перечислителей....381
Обработка перечислений....382
Вывод перечислителей....384
Выделение памяти для перечислений....384
Польза от перечислений....385
Тест....387
Задание №1....387
Задание №2....387
Задание №3....387
Урок №62. Классы enum....388
Урок №63. Псевдонимы типов: typedef и type alias....392
typedef и читабельность кода....392
typedef и поддержка кода....393
typedef и кроссплатформенность....393
typedef и упрощение сложного....393
type alias....394
Тест....395
Задание №1....395
Задание №2....395
Урок №64. Структуры....396
Объявление и определение структур....396
Доступ к членам структур....397
Инициализация структур....398
C++11/14: Инициализация нестатических членов структур....399
Присваивание значений членам структур....400
Структуры и функции....400
Вложенные структуры....402
Размер структур....403
Доступ к структурам из нескольких файлов....404
Заключение....404
Тест....404
Задание №1....404
Задание №2....404
Урок №65. Вывод типов: ключевое слово auto....406
Ключевое слово auto и параметры функций....407
Вывод типов в C++14....408
trailing-синтаксис в C++11....408
Заключение....409
Глава №4. Итоговый тест....410
Теория....410
Тест....411
Урок №66. Операторы управления потоком выполнения программ....412
Порядок выполнения программ....412
Остановка....412
Прыжок....413
Условные ветвления....413
Циклы....414
Исключения....414
Заключение....415
Урок №67. Операторы условного ветвления if/else....416
Использование нескольких операций в ветвлениях if/else....416
Неявное указание блоков....417
Связывание стейтментов if....418
Вложенные ветвления if/else....418
Использование логических операторов в ветвлениях if/else....420
Основные использования ветвлений if/else....421
Нулевые стейтменты....422
Урок №68. Оператор switch....424
Оператор switch....425
Лейблы case....426
Лейбл по умолчанию....427
switch и fall-through....427
switch и оператор break....428
Несколько стейтментов внутри блока switch....429
Объявление переменной и её инициализация внутри case....429
Тест....430
Задание №1....430
Задание №2....430
Урок №69. Оператор goto....432
Урок №70. Цикл while....434
Бесконечные циклы....435
Счетчик цикла while....436
Итерации....437
Вложенные циклы while....439
Тест....439
Задание №1....439
Задание №2....439
Задание №3....440
Задание №4....440
Урок №71. Цикл do while....441
Урок №72. Цикл for....443
Цикл for....443
Выполнение цикла for....443
Еще примеры циклов for....445
Ошибка неучтенной единицы....446
Пропущенные выражения в цикле....446
Объявления переменных в цикле for....447
Использование циклов for в старых версиях С++....448
Вложенные циклы for....448
Заключение....449
Тест....449
Задание №1....449
Задание №2....449
Задание №3....450
Урок №73. Операторы break и continue....451
break и switch....451
break и циклы....451
break и return....452
Оператор continue....453
break и continue....455
Урок №74. Генерация случайных чисел....457
Генератор псевдослучайных чисел....457
Функции srand() и rand()....459
Стартовое число и последовательности в ГПСЧ....460
Генерация случайных чисел в заданном диапазоне....462
Какой ГПСЧ является хорошим?....462
Почему rand() является посредственным ГПСЧ?....464
Отладка программ, использующих случайные числа....465
Рандомные числа в C++11....465
Урок №75. Обработка некорректного пользовательского ввода....467
std::cin, буфер данных и извлечение....467
Проверка пользовательского ввода....468
Основные типы некорректного пользовательского ввода....471
Ошибка №1: Извлечение выполняется успешно, но данные бесполезны....471
Ошибка №2: Извлечение выполняется успешно, но пользователь вводит лишний текст....472
Ошибка №3: Извлечение не выполняется....473
Ошибка №4: Извлечение выполняется успешно, но пользователь ввел слишком большое числовое значение....475
Объединяем всё вместе....475
Заключение....477
Урок №76. Введение в тестирование кода....478
Выполнение неофициального тестирования....479
Совет №1: Пишите свою программу по частям: в небольших, четко определенных единицах (функциях)....480
Совет №2: Нацеливайтесь на 100%-ное покрытие кода....482
Совет №3: Нацеливайтесь на 100%-ное покрытие ветвлений....482
Совет №4: Нацеливайтесь на 100%-ное покрытие циклов....484
Совет №5: Убедитесь, что вы тестируете разные типы ввода....484
Сохранение ваших тестов....485
Автоматизация тестирования....486
Тест....487
Задание №1....487
Задание №2....487
Глава №5. Итоговый тест....488
Теория....488
Тест....489
Задание №1....489
Задание №2....490
Урок №77. Массивы....492
Что такое массив?....492
Элементы массива....493
Пример программы с использованием массива....493
Типы данных и массивы....494
Индексы массивов....494
Объявление массивов фиксированного размера....495
Чуть-чуть о динамических массивах....495
Заключение....496
Урок №78. Фиксированные массивы....497
Длина массива....498
Массивы и перечисления....498
Массивы и классы enum....499
Передача массивов в функции....500
Оператор sizeof и массивы....502
Определение длины фиксированного массива....503
Индексирование массива вне диапазона....503
Тест....504
Задание №1....504
Задание №2....504
Урок №79. Массивы и циклы....505
Циклы и массивы....505
Использование циклов с массивами....507
Массивы и «ошибка неучтенной единицы»....507
Тест....508
Задание №1....508
Задание №2....508
Задание №3....509
Урок №80. Сортировка массивов методом выбора....510
Как работает сортировка?....510
Сортировка массивов методом выбора....511
Сортировка массивов методом выбора в C++....513
Функция std::sort()....514
Тест....515
Задание №1....515
Задание №2....515
Задание №3....515
Задание №4....516
Урок №81. Многомерные массивы....517
Многомерные массивы....517
Инициализация двумерных массивов....517
Доступ к элементам в двумерном массиве....518
Многомерные массивы более двух измерений....518
Пример двумерного массива....519
Урок №82. Строки C-style....521
Строки C-style....521
Строки C-style и std::cin....523
Управление строками C-style....524
Стоит ли использовать строки C-style?....526
Урок №83. Введение в класс std::string_view....527
Введение в класс std::string_view....528
Функции, модифицирующие представление....529
std::string_view и обычные строки....530
Проблемы владения и доступа....531
Конвертация std::string_view в std::string....533
Конвертация std::string_view в строку C-style....533
Функция data()....534
Нюансы std::string_view....536
Урок №84. Указатели....537
Оператор разыменования *....538
Указатели....538
Присваивание значений указателю....539
Оператор адреса возвращает указатель....540
Разыменование указателей....541
Разыменование некорректных указателей....542
Размер указателей....543
В чём польза указателей?....543
Заключение....544
Тест....544
Задание №1....544
Задание №2....545
Урок №85. Нулевые указатели....546
Нулевое значение и нулевые указатели....546
Разыменование нулевых указателей....546
Макрос NULL....547
Ключевое слово nullptr в C++11....547
Тип данных std::nullptr_t в C++11....548
Урок №86. Указатели и массивы....549
Сходства между указателями и массивами....549
Различия между указателями и массивами....550
Передача массивов в функции....551
Передача по адресу....553
Массивы в структурах и классах....554
Урок №87. Адресная арифметика и индексация массивов....555
Адресная арифметика....555
Расположение элементов массива в памяти....556
Индексация массивов....557
Использование указателя для итерации по массиву....558
Урок №88. Символьные константы строк C-style....560
std::cout и указатели типа char....561
Урок №89. Динамическое выделение памяти....563
Динамическое выделение переменных....563
Как работает динамическое выделение памяти?....565
Освобождение памяти....566
Висячие указатели....566
Оператор new....568
Нулевые указатели и динамическое выделение памяти....569
Утечка памяти....569
Заключение....571
Урок №90. Динамические массивы....572
Динамические массивы....572
Удаление динамического массива....573
Инициализация динамических массивов....573
Изменение длины массивов....574
Тест....574
Урок №91. Указатели и const....576
Указатели на константные значения....576
Константные указатели....577
Константные указатели на константные значения....578
Заключение....578
Урок №92. Ссылки....580
Ссылки....580
Ссылки в качестве псевдонимов....580
Краткий обзор l-value и r-value....581
Инициализация ссылок....581
Ссылки в качестве параметров в функциях....582
Ссылки как более легкий способ доступа к данным....583
Ссылки vs. Указатели....584
Заключение....584
Урок №93. Ссылки и const....586
Ссылки на константные значения....586
Инициализация ссылок на константы....586
Ссылки r-values....587
Константные ссылки в качестве параметров функции....587
Урок №94. Оператор доступа к членам через указатель....589
Урок №95. Цикл foreach....591
Цикл foreach и ключевое слово auto....592
Цикл foreach и ссылки....592
Еще один пример....593
Цикл foreach и не массивы....594
Цикл foreach не работает с указателями на массив....594
Могу ли я получить индекс текущего элемента?....595
Заключение....595
Тест....595
Урок №96. Указатели типа void....596
Заключение....598
Тест....598
Урок №97. Указатели на указатели....599
Указатели на указатели....599
Массивы указателей....600
Двумерные динамически выделенные массивы....600
Указатель на указатель на указатель на указатель и т.д.....602
Заключение....602
Урок №98. Введение в std::array....603
Введение в std::array....603
Размер и сортировка....604
Заключение....606
Урок №99. Введение в std::vector....607
Векторы....607
Нет утечкам памяти!....608
Длина векторов....608
Заключение....610
Урок №100. Введение в итераторы....611
Итераторы в С++....612
Указатели в качестве итераторов....613
Итераторы Стандартной библиотеки С++....614
Итераторы и циклы for с явным указанием диапазона....615
"Висячие" итераторы....616
Урок №101. Алгоритмы в Стандартной библиотеке С++....618
Алгоритм std::find() и поиск элемента по значению....618
Алгоритм std::find_if() и поиск элемента с условием....620
Алгоритмы std::count()/std::count_if() и подсчет вхождений элемента....621
Алгоритм std::sort() и пользовательская сортировка....622
Алгоритм std::for_each() и все элементы контейнера....623
Порядок выполнения....624
Диапазоны в C++20....624
Заключение....625
Глава №6. Итоговый тест....626
Теория....626
Тест....628
Задание №1....628
Задание №2....628
Задание №3....629
Задание №4....629
Задание №5....630
Задание №6....631
Задание №7....632
Дополнительные задания....633
Урок №102. Параметры и аргументы функций....635
Параметры vs. Аргументы....635
Урок №103. Передача по значению....638
Плюсы и минусы передачи по значению....639
Урок №104. Передача по ссылке....641
Передача по ссылке....641
Возврат сразу нескольких значений....642
Передача по константной ссылке....644
Плюсы и минусы передачи по ссылке....645
Урок №105. Передача по адресу....647
Передача по адресу....647
Передача по константному адресу....648
Передача адресов по ссылке....651
Существует только передача по значению....652
Плюсы и минусы передачи по адресу....652
Урок №106. Возврат значений по ссылке, по адресу и по значению....654
Возврат по значению....654
Возврат по адресу....655
Возврат по ссылке....656
Смешивание возвращаемых значений и ссылок....658
Заключение....659
Тест....659
Задание №1....659
Задание №2....659
Задание №3....659
Задание №4....660
Задание №5....660
Урок №107. Встроенные функции....661
Встроенные функции освобождаются от "правила одного определения"....663
Урок №108. Перегрузка функций....664
Типы возврата в перегрузке функций....665
Псевдонимы типов в перегрузке функций....665
Вызовы функций....665
Несколько совпадений....668
Заключение....669
Урок №109. Параметры по умолчанию....670
Несколько параметров по умолчанию....671
Объявление параметров по умолчанию....671
Параметры по умолчанию и перегрузка функций....673
Заключение....673
Урок №110. Указатели на функции....674
Указатели на функции....674
Присваивание функции указателю на функцию....676
Вызов функции через указатель на функцию....677
Передача функций в качестве аргументов другим функциям....678
Параметры по умолчанию в функциях....682
Указатели на функции и псевдонимы типов....682
Использование std::function в C++11....683
Заключение....684
Тест....684
Задание №1....684
Задание №2....685
Урок №111. Стек и Куча....686
Куча....686
Стек вызовов....687
Стек как структура данных....687
Сегмент стека вызовов....689
Стек вызовов на практике....690
Пример стека вызовов....690
Переполнение стека....691
Урок №112. Ёмкость вектора....693
Длина vs. Ёмкость....693
Оператор индекса и функция at()....695
std::vector в качестве стека....695
Дополнительная ёмкость....698
Урок №113. Рекурсия и Числа Фибоначчи....699
Условие завершения рекурсии....699
Рекурсивные алгоритмы....702
Числа Фибоначчи....702
Рекурсия vs. Итерации....704
Тест....705
Задание №1....705
Задание №2....705
Задание №3....705
Задание №4....705
Урок №114. Обработка ошибок, cerr и exit()....707
Синтаксические ошибки....707
Семантические ошибки....707
Определение ложных предположений....708
Обработка ложных предположений....711
Урок №115. assert и static_assert....714
Стейтмент assert....714
NDEBUG....715
static_assert....716
Урок №116. Аргументы командной строки....717
Передача аргументов командной строки....718
Использование аргументов командной строки....721
Обработка числовых аргументов....722
Анализ аргументов командной строки....723
Заключение....724
Урок №117. Эллипсис....725
Эллипсис....725
Почему эллипсис небезопасен?....727
Рекомендации по безопасному использованию эллипсиса....732
Урок №118. Лямбда-выражения....733
Введение в лямбда-выражения....734
Тип лямбда-выражений....735
Общие/Обобщённые лямбды....738
Общие лямбды и статические переменные....740
Вывод возвращаемого типа и возвращаемые типы trailing....742
Функциональные объекты Стандартной библиотеки С++....743
Заключение....744
Тест....744
Задание №1....744
Задание №2....745
Урок №119. Лямбда-захваты....747
Введение в лямбда-захваты....748
Суть работы лямбда-захватов....749
Захваты переменных и const....750
Захват по значению....750
Захват по ссылке....751
Захват нескольких переменных....753
Захваты по умолчанию....753
Определение новых переменных в лямбда-захвате....755
Висячие захваченные переменные....756
Непреднамеренные копии лямбд....757
Тест....760
Задание №1....760
Задание №2....760
Задание №3....761
Глава №7. Итоговый тест....764
Теория....764
Тест....765
Задание №1....765
Задание №2....766
Задание №3....767
Урок №120. Введение в ООП....770
Урок №121. Классы, Объекты и Методы....772
Классы....772
Методы классов....774
Примечание о структурах в C++....777
Заключение....777
Тест....778
Задание №1....778
Задание №2....779
Урок №122. Спецификаторы доступа public и private....780
Использование спецификаторов доступа....781
Структуры vs. Классы....784
Тест....784
Задание №1....784
Задание №2....785
Задание №3....786
Урок №123. Инкапсуляция, Геттеры и Сеттеры....787
Зачем делать переменные-члены класса закрытыми?....787
Инкапсуляция....787
Функции доступа (геттеры и сеттеры)....791
Заключение....793
Урок №124. Конструкторы....794
Конструкторы по умолчанию....795
Конструкторы с параметрами....796
Копирующая инициализация....797
Уменьшение количества конструкторов....798
Неявно генерируемый конструктор по умолчанию....798
Классы, содержащие другие классы....800
Тест....801
Задание №1....801
Задание №2....802
Урок №125. Список инициализации членов класса....803
uniform-инициализация в C++11....806
Инициализация массивов в классе....807
Инициализация переменных-членов, которые являются классами....808
Использование списков инициализации....808
Порядок выполнения в списке инициализации....810
Заключение....810
Тест....810
Урок №126. Инициализация нестатических членов класса....812
Тест....814
Задание №1....814
Задание №2....815
Урок №127. Делегирующие конструкторы....816
Решение в C++11....816
Использование отдельного метода....817
Делегирующие конструкторы в C++11....818
Несколько заметок о делегирующих конструкторах....820
Урок №128. Деструкторы....821
Имена деструкторов....821
Пример использования деструктора на практике....821
Выполнение конструкторов и деструкторов....823
Идиома программирования RAII....824
Предупреждение о функции exit()....824
Заключение....825
Урок №129. Скрытый указатель *this....826
Скрытый указатель *this....826
Указатель *this всегда указывает на текущий объект....828
Явное указание указателя *this....828
Цепочки методов класса....829
Заключение....831
Урок №130. Классы и заголовочные файлы....832
Классы и заголовочные файлы....834
Параметры по умолчанию....836
Библиотеки....836
Заключение....837
Урок №131. Классы и const....838
Константные объекты классов....838
Константные методы классов....839
Константные ссылки и классы....840
Перегрузка константных и неконстантных функций....842
Заключение....843
Урок №132. Статические переменные-члены класса....844
Статические члены не связаны с объектами класса....846
Определение и инициализация статических переменных-членов класса....847
Инициализация статических переменных-членов внутри тела класса....847
Использование статических переменных-членов класса....848
Урок №133. Статические методы класса....850
Статические методы не имеют указателя *this....851
Еще один пример....851
Предупреждение о классах со всеми статическими членами....852
C++ не поддерживает статические конструкторы....852
Заключение....854
Урок №134. Дружественные функции и классы....855
Дружественные функции....855
Дружественные функции и несколько классов....857
Дружественные классы....858
Дружественные методы....859
Заключение....862
Тест....862
Урок №135. Анонимные объекты....865
Анонимные объекты класса....866
Заключение....870
Урок №136. Вложенные типы данных в классах....871
Вложенные пользовательские типы данных в классах....871
Другие вложенные пользовательские типы данных в классах....873
Урок №137. Измерение времени выполнения (тайминг) кода....874
Что влияет на тайминг кода?....878
Глава №8. Итоговый тест....880
Теория....880
Тест....882
Задание №1....882
Задание №2....883
Задание №3....884
Задание №4....886
Урок №138. Введение в перегрузку операторов....893
Операторы, как функции....893
Вызов перегруженных операторов....894
Ограничения в перегрузке операторов....894
Урок №139. Перегрузка операторов через дружественные функции....897
Перегрузка операторов через дружественные функции....897
Дружественные функции могут быть определены внутри класса....899
Перегрузка операторов с операндами разных типов....900
Еще один пример....901
Тест....903
Урок №140. Перегрузка операторов через обычные функции....907
Урок №141. Перегрузка операторов ввода и вывода....910
Перегрузка оператора ввода >>....914
Заключение....915
Тест....915
Урок №142. Перегрузка операторов через методы класса....917
Перегрузка операторов через методы классов....917
Не всё может быть перегружено через дружественные функции....919
Не всё может быть перегружено через методы класса....919
Какой способ перегрузки и когда следует использовать?....920
Урок №143. Перегрузка унарных операторов +, - и логического НЕ....922
Тест....924
Урок №144. Перегрузка операторов сравнения....925
Тест....927
Задание №1....927
Задание №2....927
Урок №145. Перегрузка операторов инкремента и декремента....929
Перегрузка операторов инкремента и декремента версии префикс....929
Перегрузка операторов инкремента и декремента версии постфикс....930
Урок №146. Перегрузка оператора индексации []....934
Почему оператор индексации [] использует возврат по ссылке?....936
Использование оператора индексации с константными объектами класса....937
Проверка ошибок....938
Указатели на объекты и перегруженный оператор []....939
Передаваемый аргумент не обязательно должен быть целым числом....940
Заключение....940
Тест....941
Задание №1....941
Задание №2....942
Задание №3....942
Урок №147. Перегрузка оператора ()....943
Функторы в C++....946
Заключение....947
Тест....947
Урок №148. Перегрузка операций преобразования типов данных....949
Урок №149. Конструктор копирования....953
Предотвращение создания копий объектов....956
Конструктор копирования может быть проигнорирован....957
Урок №150. Копирующая инициализация....960
Использование копирующей инициализации с классами....960
Другие применения копирующей инициализации....961
Урок №151. Конструкторы преобразования, ключевые слова explicit и delete....964
Ключевое слово explicit....965
Ключевое слово delete....967
Урок №152. Перегрузка оператора присваивания....970
Присваивание vs. Конструктор копирования....970
Перегрузка оператора присваивания....970
Самоприсваивание....972
Обнаружение и обработка самоприсваивания....974
Оператор присваивания по умолчанию....974
Урок №153. Поверхностное и глубокое копирование....976
Глубокое копирование....980
Лучшее решение....982
Заключение....982
Глава №9. Итоговый тест....983
Теория....983
Тест....984
Задание №1....984
Задание №2....985
Задание №3....986
Задание №4....986
Урок №154. Типы связей между объектами....990
Связи между объектами в программировании....991
Урок №155. Композиция объектов....992
Типы композиции объектов....992
Композиция....993
Реализация композиций....994
Еще один пример....995
Вариации композиции....998
Композиция и подклассы....998
Урок №156. Агрегация....1000
Агрегация....1000
Реализация агрегации....1001
Выбирайте правильные отношения....1003
Композиция и агрегация....1003
Тест....1004
Задание №1....1004
Задание №2....1004
Урок №157. Ассоциация....1006
Ассоциация....1006
Реализация ассоциаций....1007
Рефлексивная ассоциация....1009
Ассоциации могут быть косвенными....1010
Композиция vs. Агрегация vs. Ассоциация....1012
Урок №158. Зависимость....1013
Зависимость vs. Ассоциация....1014
Урок №159. Контейнерные классы....1015
Контейнерные классы....1015
Типы контейнерных классов....1016
Контейнерный класс-массив....1016
Урок №160. Список инициализации std::initializer_list....1026
Инициализация классов через std::initializer_list....1028
Присваивание значений и std::initializer_list....1030
Заключение....1031
Тест....1032
Глава №10. Итоговый тест....1033
Теория....1033
Тест....1035
Задание №1....1035
Задание №2....1035
Урок №161. Введение в Наследование....1036
Иерархии....1037
Что дальше?....1038
Урок №162. Базовое наследование....1039
Класс Human....1040
Класс BasketballPlayer....1040
Делаем класс BasketballPlayer дочерним....1041
Дочерний класс Employee....1043
Цепочка наследований....1045
Почему наследование является полезным?....1046
Заключение....1047
Урок №163. Порядок построения дочерних классов....1048
Порядок построения классов в цепочке наследования....1051
Заключение....1052
Урок №164. Конструкторы и инициализация дочерних классов....1054
Конструкторы и инициализация....1054
Инициализация членов родительского класса....1055
Теперь мы можем сделать наши члены private....1059
Еще один пример....1060
Цепочки наследований....1062
Деструкторы....1063
Заключение....1063
Тест....1063
Урок №165. Наследование и спецификатор доступа protected....1065
Спецификатор доступа protected....1065
Когда следует использовать спецификатор доступа protected?....1066
Типы наследований. Доступ к членам....1067
Наследование типа public....1068
Наследование типа private....1069
Наследование типа protected....1071
Финальный пример....1071
Заключение....1072
Урок №166. Добавление нового функционала в дочерний класс....1074
Добавление нового функционала в дочерний класс....1074
Урок №167. Переопределение методов родительского класса....1077
Вызов методов родительского класса....1077
Переопределение методов родительского класса....1078
Расширение функционала родительских методов....1079
Урок №168. Сокрытие методов родительского класса....1082
Сокрытие родительских методов в дочернем классе....1083
Урок №169. Множественное наследование....1085
Множественное наследование....1085
Проблемы с множественным наследованием....1086
Стоит ли использовать множественное наследование?....1089
Глава №11. Итоговый тест....1090
Теория....1090
Тест....1091
Задание №1....1091
Задание №2....1095
Задание №3....1096
Урок №170. Указатели, Ссылки и Наследование....1102
Указатели, ссылки и родительские классы....1105
Тест....1107
Урок №171. Виртуальные функции и Полиморфизм....1108
Более сложный пример....1110
Использование ключевого слова virtual....1114
Типы возврата виртуальных функций....1114
Не вызывайте виртуальные функции в теле конструкторов или деструкторов....1114
Недостаток виртуальных функций....1115
Тест....1115
Урок №172. Модификаторы override и final....1120
Модификатор override....1120
Модификатор final....1122
Ковариантный тип возврата....1123
Урок №173. Виртуальные деструкторы и Виртуальное присваивание....1125
Виртуальное присваивание....1126
Игнорирование виртуальных функций....1127
Урок №174. Раннее и Позднее Связывания....1128
Раннее связывание....1128
Позднее связывание....1130
Урок №175. Виртуальные таблицы....1132
Виртуальные таблицы....1132
Как заполняются виртуальные таблицы?....1133
Заключение....1136
Урок №176. Чистые виртуальные функции, Интерфейсы и Абстрактные классы....1137
Пример чистой виртуальной функции....1138
Чистые виртуальные функции с определениями....1141
Интерфейсы....1142
Чистые виртуальные функции и виртуальная таблица....1144
Тест....1144
Урок №177. Виртуальный базовый класс....1145
Алмаз смерти....1145
Виртуальные базовые классы....1147
Урок №178. Обрезка объектов....1150
Обрезка объектов и функции....1151
Обрезка векторов....1153
Заключение....1155
Урок №179. Динамическое приведение типов. Оператор dynamic_cast....1156
Зачем нужен dynamic_cast?....1156
Оператор dynamic_cast....1157
Невозможность конвертации через dynamic_cast....1158
Понижающее приведение и оператор static_cast....1159
Оператор dynamic_cast и Ссылки....1161
Оператор dynamic_cast vs. Оператор static_cast....1162
Понижающее приведение vs. Виртуальные функции....1162
Урок №180. Вывод объектов классов через оператор вывода....1163
Можем ли мы сделать operator<< виртуальным?....1165
Решение....1165
Глава №12. Итоговый тест....1168
Теория....1168
Тест....1170
Задание №1....1170
Задание №2....1174
Урок №181. Шаблоны функций....1176
Создание шаблонов функций....1177
Использование шаблонов функций....1179
Заключение....1180
Урок №182. Экземпляры шаблонов функций....1181
Операторы, вызовы функций и шаблоны функций....1181
Еще один пример....1183
Урок №183. Шаблоны классов....1191
Шаблоны и контейнерные классы....1191
Шаблоны классов в Стандартной библиотеке С++....1195
Шаблоны классов и Заголовочные файлы....1195
Урок №184. Параметр non-type в шаблоне....1200
Параметр non-type....1200
Урок №185. Явная специализация шаблона функции....1202
Еще один пример....1203
Урок №186. Явная специализация шаблона класса....1206
Специализация шаблона класса....1207
Урок №187. Частичная специализация шаблона....1211
Полная специализация шаблона — решение?....1213
Частичная специализация шаблона....1214
Частичная специализация шаблонов методов....1216
Урок №188. Частичная специализация шаблонов и Указатели....1221
Глава №13. Итоговый тест....1227
Теория....1227
Тест....1228
Задание №1....1228
Задание №2....1228
Задание №3....1229
Урок №189. Исключения. Зачем они нужны?....1230
Когда коды возврата не работают....1230
Исключения....1232
Урок №190. Обработка исключений. Операторы throw, try и catch....1233
Генерация исключений....1233
Поиск исключений....1233
Обработка исключений....1234
Использование throw, try и catch вместе....1235
Резюмируем....1236
Исключения обрабатываются немедленно....1237
Еще один пример....1237
Что обычно делают блоки catch?....1238
Урок №191. Исключения, Функции и Раскручивание стека....1240
Генерация исключений за пределами блока try....1240
Еще один пример раскручивания стека....1242
Урок №192. Непойманные исключения и обработчики catch-all....1246
Обработчики всех типов исключений....1247
Использование обработчика catch-all в функции main()....1248
Спецификации исключений....1248
Урок №193. Классы-Исключения и Наследование....1250
Исключения в перегрузке операторов....1250
Когда конструкторы терпят неудачу....1251
Классы-Исключения....1251
Исключения и Наследование....1253
Интерфейсный класс std::exception....1255
Использование стандартных исключений напрямую....1257
Создание собственных классов-исключений, дочерних классу std::exception....1258
Урок №194. Повторная генерация исключений....1260
Генерация нового исключения....1261
Неправильная повторная генерация исключений....1262
Правильная повторная генерация исключений....1264
Урок №195. Функциональный try-блок....1266
Не используйте функциональный try-блок для очистки памяти....1268
Заключение....1269
Урок №196. Недостатки и опасности использования исключений....1270
Очистка памяти....1270
Исключения и деструкторы....1272
Проблемы с производительностью....1272
В каких случаях стоит использовать исключения?....1273
Глава №14. Итоговый тест....1275
Теория....1275
Тест....1276
Урок №197. Умные указатели и Семантика перемещения....1277
Умные указатели....1278
Критический недостаток....1281
Семантика перемещения....1284
std::auto_ptr и почему его лучше не использовать....1286
Что дальше?....1287
Урок №198. Ссылки r-value....1288
l-values и r-values....1288
Ссылки l-value....1289
Ссылки r-value....1290
Ссылки r-value в качестве параметров функции....1293
Возврат ссылки r-value....1293
Тест....1294
Урок №199. Конструктор перемещения и Оператор присваивания перемещением....1295
Конструктор копирования и оператор присваивания копированием....1295
Конструктор перемещения и оператор присваивания перемещением....1298
Когда вызываются конструктор перемещения и оператор присваивания перемещением?....1301
Ключевое понимание семантики перемещения....1302
Использование семантики перемещения с l-values....1302
Отключение копирования....1303
Семантика копирования vs. Семантика перемещения....1304
Урок №200. Функция std::move()....1310
Функция std::move()....1311
Еще один пример....1312
Функции перемещения....1313
Чем еще полезна функция std::move()?....1313
Заключение....1314
Урок №201. Умный указатель std::unique_ptr....1315
Умный указатель std::unique_ptr....1316
Доступ к объекту, который хранит умный указатель....1317
Умный указатель std::unique_ptr и динамические массивы....1318
Функция std::make_unique()....1319
Безопасность использования исключений....1320
Возврат умного указателя std::unique_ptr из функции....1320
Передача умного указателя std::unique_ptr в функцию....1321
Умный указатель std::unique_ptr и классы....1323
Неправильное использование умного указателя std::unique_ptr....1323
Тест....1324
Задание №1....1324
Задание №2....1324
Урок №202. Умный указатель std::shared_ptr....1326
Умный указатель std::shared_ptr....1326
Функция std::make_shared()....1328
Детали реализации умного указателя std::shared_ptr....1329
Создание std::shared_ptr из std::unique_ptr....1330
Опасности использования умного указателя std::shared_ptr....1330
Умный указатель std::shared_ptr и массивы....1330
Заключение....1330
Урок №203. Умный указатель std::weak_ptr....1332
Циклическая зависимость....1334
Упрощенная циклическая зависимость....1334
Так что же такое умный указатель std::weak_ptr?....1335
Использование умного указателя std::weak_ptr....1336
Заключение....1338
Тест....1338
Глава №15. Итоговый тест....1339
Теория....1339
Тест....1340
Задание №1....1340
Задание №2....1341
Задание №3....1341
Урок №204. Стандартная библиотека шаблонов (STL)....1342
Стандартная библиотека шаблонов....1342
Урок №205. Контейнеры STL....1343
Последовательные контейнеры....1343
Ассоциативные контейнеры....1345
Адаптеры....1345
Урок №206. Итераторы STL....1347
Функционал итераторов....1347
Итерация по вектору....1348
Итерация по списку....1348
Итерация по set-у....1349
Итерация по ассоциативному массиву....1350
Заключение....1351
Урок №207. Алгоритмы STL....1352
Алгоритмы STL....1352
Алгоритмы min_element() и max_element()....1352
Алгоритмы find() и list::insert()....1353
Алгоритмы sort() и reverse()....1353
Заключение....1354
Урок №208. Строковые классы std::string и std::wstring....1355
Зачем нужен std::string?....1355
Класс std::string....1356
Функционал std::string....1357
Заключение....1359
Урок №209. Создание, уничтожение и конвертация std::string....1360
string::string()....1360
string::string(const string& strString)....1360
string::string(const string& strString, size_type unIndex) string::string(const string& strString, size_type unIndex, size_type unLength)....1361
string::string(const char *szCString)....1361
string::string(const char *szCString, size_type unLength)....1362
string::string(size_type nNum, char chChar)....1362
template string::string(InputIterator itBeg, InputIterator itEnd)....1363
string::~string()....1363
Создание std::string из чисел....1363
Конвертация std::string в числа....1364
Урок №210. Длина и ёмкость std::string....1366
Длина std::string....1366
Ёмкость std::string....1367
Урок №211. Доступ к символам std::string. Конвертация std::string в строки C-style....1372
char& string::operator[](size_type nIndex) const char& string::operator[](size_type nIndex) const....1372
char& string::at(size_type nIndex) const char& string::at(size_type nIndex) const....1372
Конвертация std::string в строки C-style....1373
const char* string::c_str() const....1373
const char* string::data() const....1374
size_type string::copy(char *szBuf, size_type nLength) const size_type string::copy(char *szBuf, size_type nLength, size_type nIndex) const....1374
Урок №212. Присваивание и перестановка значений с std::string....1376
string& string::operator=(const string& str) string& string::assign(const string& str) string& string::operator=(const char* str) string& string::assign(const char* str) string& string::operator=(char c)....1376
string& string::assign(const string& str, size_type index, size_type len)....1377
string& string::assign(const char* chars, size_type len)....1377
string& string::assign(size_type len, char c)....1378
Перестановка значений двух строк....1379
void string::swap(string &str) void swap(string &str1, string &str2)....1379
Урок №213. Добавление к std::string....1380
string& string::operator+=(const string& str) string& string::append(const string& str)....1380
string& string::append(const string& str, size_type index, size_type num)....1380
string& string::operator+=(const char* str) string& string::append(const char* str)....1381
string& string::append(const char* str, size_type len)....1382
string& string::operator+=(char c) void string::push_back(char c)....1382
string& string::append(size_type num, char c)....1383
string& string::append(InputIterator start, InputIterator end)....1383
Урок №214. Вставка символов и строк в std::string....1384
string& string::insert(size_type index, const string& str) string& string::insert(size_type index, const char* str)....1384
string& string::insert(size_type index, const string& str, size_type startindex, size_type num)....1384
string& string::insert(size_type index, const char* str, size_type len)....1385
string& string::insert(size_type index, size_type num, char c)....1386
void insert(iterator it, size_type num, char c) iterator string::insert(iterator it, char c) void string::insert(iterator it, InputIterator begin, InputIterator end)....1386
Урок №215. Потоки ввода и вывода....1388
Библиотека iostream....1388
Потоки в С++....1389
Ввод/вывод в C++....1389
Стандартные потоки в C++....1390
Пример на практике....1391
Урок №216. Функционал класса istream....1392
Оператор извлечения....1392
Извлечение и пробелы....1393
Специальная версия функции getline() для std::string....1396
Еще несколько полезных функций класса istream....1396
Урок №217. Функционал классов ostream и ios. Форматирование вывода....1397
Форматирование вывода....1397
Полезные флаги, манипуляторы и методы....1400
Точность, запись чисел и десятичная точка....1403
Ширина поля, символы-заполнители и выравнивание....1406
Урок №218. Потоковые классы и Строки....1408
Потоковые классы....1408
Конвертация строк в числа и наоборот....1409
Очистка stringstream для повторного использования....1410
Урок №219. Состояния потока и валидация пользовательского ввода....1412
Валидация пользовательского ввода....1413
Строковая валидация....1414
Числовая валидация....1416
Числовая валидация с помощью строки....1418
Урок №220. Базовый файловый ввод и вывод....1420
Файловый вывод....1420
Файловый ввод....1421
Буферизованный вывод....1423
Режимы открытия файлов....1424
Явное открытие файлов с помощью функции open()....1425
Урок №221. Рандомный файловый ввод и вывод....1427
Рандомный доступ к файлам с помощью функций seekg() и seekp()....1427
Одновременное чтение и запись в файл с помощью fstream....1430
Предупреждение о записи указателей в файлы....1431
Статические и динамические библиотеки....1433
Типы библиотек....1433
Установка библиотек....1434
Использование библиотек....1435
Заключение....1436
Подключение и использование библиотек в Visual Studio....1437
Шаг №1: Создаем папку для хранения библиотеки....1437
Шаг №2: Скачиваем и устанавливаем библиотеку....1437
Шаг №3: Указываем путь к заголовочным файлам библиотеки....1438
Шаг №4: Указываем путь к файлам с реализацией библиотеки....1440
Шаг №5: Копируем dll-ку в папку с проектом....1443
Шаг №6: Тестируем....1444
С++11. Нововведения....1445
Цели C++11....1445
Что нового в С++11?....1446
С++14. Нововведения....1447
Что нового в C++14?....1447
С++17. Нововведения....1448
Что нового в C++17?....1448
С++20. Нововведения....1449
Стандарты языка C++....1449
С++98....1449
С++03....1450
TR1....1450
С++11....1450
С++14....1450
С++17....1451
С++20....1451
Спецификации исключений и спецификатор noexcept....1453
Спецификатор noexcept....1453
Спецификатор noexcept с параметром типа bool....1454
Не выбрасывающие и потенциально выбрасывающие исключения функции....1454
Оператор noexcept....1455
Гарантии безопасности исключений....1456
Когда следует использовать спецификатор noexcept....1457
Почему полезно отмечать функции, как не выбрасывающие исключений функции....1458
Динамические спецификации исключений....1458
Функция std::move_if_noexcept()....1459
Проблемы с исключениями при их совместном использовании с конструкторами перемещения....1459
На помощь спешит функция std::move_if_noexcept()....1463
Конец? Что дальше?....1465
Структуры данных и алгоритмы....1465
Стандартная библиотека C++....1466
Приложения с графическим интерфейсом....1466
TCP/IP. Сетевое программирование....1466
Многопоточность....1467
Ravesli. Что дальше?....1468
Ответы: Урок №11....1470
Ответы: Урок №13....1471
Ответы: Урок №15....1472
Ответы: Урок №16....1473
Ответы: Урок №18....1475
Ответы: Урок №19....1476
Ответы: Урок №22....1477
Ответы: Урок №23....1478
Ответы: Урок №26....1479
Ответы: Глава №1. Итоговый тест....1480
Ответы: Урок №36....1482
Ответы: Урок №37....1483
Ответы: Глава №2. Итоговый тест....1484
Ответы: Урок №41....1487
Ответы: Урок №42....1488
Ответы: Урок №46....1490
Ответы: Урок №47....1491
Ответы: Урок №48....1494
Ответы: Урок №49....1495
Ответы: Глава №3. Итоговый тест....1496
Ответы: Урок №51....1498
Ответы: Урок №52....1499
Ответы: Урок №54....1500
Ответы: Урок №58....1501
Ответы: Урок №60....1502
Ответы: Урок №61....1503
Ответы: Урок №63....1504
Ответы: Урок №64....1505
Ответы: Глава №4. Итоговый тест....1507
Ответы: Урок №68....1509
Ответы: Урок №70....1511
Ответы: Урок №72....1513
Ответы: Урок №76....1514
Ответы: Глава №5. Итоговый тест....1515
Ответы: Урок №78....1518
Ответы: Урок №79....1519
Ответы: Урок №80....1521
Ответы: Урок №84....1524
Ответы: Урок №90....1526
Ответы: Урок №95....1528
Ответы: Урок №96....1529
Ответы: Глава №6. Итоговый тест....1530
Ответы: Урок №106....1541
Ответы: Урок №110....1542
Ответы: Урок №113....1547
Ответы: Урок №118....1549
Ответы: Урок №119....1551
Ответы: Глава №7. Итоговый тест....1555
Ответы: Урок №121....1558
Ответы: Урок №122....1559
Ответы: Урок №124....1563
Ответы: Урок №125....1566
Ответы: Урок №126....1567
Ответы: Урок №134....1569
Ответы: Глава №8. Итоговый тест....1574
Ответы: Урок №139....1595
Ответы: Урок №141....1599
Ответы: Урок №143....1601
Ответы: Урок №144....1602
Ответы: Урок №146....1605
Ответы: Урок №147....1608
Ответы: Глава №9. Итоговый тест....1609
Ответы: Урок №156....1618
Ответы: Урок №160....1620
Ответы: Глава №10. Итоговый тест....1622
Ответы: Урок №164....1623
Ответы: Глава №11. Итоговый тест....1625
Ответы: Урок №170....1638
Ответы: Урок №171....1640
Ответы: Урок №176....1642
Ответы: Глава №12. Итоговый тест....1643
Ответы: Глава №13. Итоговый тест....1648
Ответы: Глава №14. Итоговый тест....1650
Ответы: Урок №198....1651
Ответы: Урок №201....1652
Ответы: Урок №203....1653
Ответы: Глава №15. Итоговый тест....1654
C++ широко используется для разработки программного обеспечения, являясь одним из самых популярных языков программирования. С его помощью создают операционные системы, разнообразные прикладные программы, драйверы устройств, игры и пр. "Самоучитель по С++" включает в себя "Уроки по С++".