Самоучитель 2.0 "Уроки по C++"

Самоучитель 2.0 "Уроки по C++"

Самоучитель 2.0 "Уроки по C++"
Автор: Ravesli
Дата выхода: 2022
Издательство: Самиздат
Количество страниц: 1655
Размер файла: 10.7 MB
Тип файла: PDF
Добавил: codelibs
 Проверить на вирусы

СОДЕРЖАНИЕ....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++ широко используется для разработки программного обеспечения, являясь одним из самых популярных языков программирования. С его помощью создают операционные системы, разнообразные прикладные программы, драйверы устройств, игры и пр. "Самоучитель по С++" включает в себя "Уроки по С++".


Похожее:

Список отзывов:

Нет отзывов к книге.