Опубликовано

Представляем книгу “С++ — это просто”

С++ это просто

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

Для начинающих программистов

Вы изучите:

• Основы объектно-ориентированного программирования
• Синтаксис языка
• Функции С++
• Классы и объекты
• Наследование
• Полиморфизм
• Систему ввода-вывода в C++
• Использование шаблонов
• Обработку исключений
• Базовые принципы разработки современных приложений на С++

Книгу “С++ — это просто” можно купить со скидкой в интернет-магазине издательства “БХВ“.

Об авторе……………………………………………………………………………………………….. 13

Благодарности……………………………………………………………………………………….. 15

Предисловие к третьему изданию…………………………………………………………… 17

Предисловие к первому изданию……………………………………………………………. 19

Глава 1. Введение в ООП……………………………………………………………………….. 21

Истоки…………………………………………………………………………………………………………………………………………. 23

Структурное программирование……………………………………………………………………………………………… 24

Объектно-ориентированное программирование…………………………………………………………………….. 26

Характеристики объектно-ориентированных языков…………………………………………………………….. 28

Объекты………………………………………………………………………………………………………………………………. 28

Классы………………………………………………………………………………………………………………………………… 29

Инкапсуляция……………………………………………………………………………………………………………………… 29

Скрытие данных…………………………………………………………………………………………………………………. 29

Наследование…………………………………………………………………………………………………………………….. 30

Полиморфизм……………………………………………………………………………………………………………………… 31

Отношения включения……………………………………………………………………………………………………….. 31

Шаблоны…………………………………………………………………………………………………………………………….. 32

Обработка исключений……………………………………………………………………………………………………… 32

Многократное использование…………………………………………………………………………………………… 32

Упражнения………………………………………………………………………………………………………………………………… 33

Важное………………………………………………………………………………………………………………………………………… 35

Глава 2. Переходим на C++……………………………………………………………………. 37

Комментарии……………………………………………………………………………………………………………………………… 39

Ввод и вывод в C++……………………………………………………………………………………………………………………. 40

Динамическое объявление переменных…………………………………………………………………………………… 42

Динамическая инициализация………………………………………………………………………………………………….. 43

Вывод типов……………………………………………………………………………………………………………………………….. 43

Синтаксис структуры (struct), объединения (union) и перечисления (enum)………………………… 43

Неименованные объединения и перечисления……………………………………………………………………….. 44

Приведение типов………………………………………………………………………………………………………………………. 45

Пустой указатель (void)…………………………………………………………………………………………………………….. 46

Оператор ::………………………………………………………………………………………………………………………………….. 46

Ссылки………………………………………………………………………………………………………………………………………… 47

Типы обращений к функциям……………………………………………………………………………………………………. 48

Возвращение значения по ссылке…………………………………………………………………………………………….. 51

Спецификатор const…………………………………………………………………………………………………………………… 52

Const-указатели………………………………………………………………………………………………………………….. 53

Const-ссылки………………………………………………………………………………………………………………………. 54

Возврат значений const-переменных……………………………………………………………………………….. 57

Функции-члены типа const………………………………………………………………………………………………… 57

Логический тип данных (bool)………………………………………………………………………………………………….. 58

Упражнения………………………………………………………………………………………………………………………………… 59

Важное………………………………………………………………………………………………………………………………………… 65

Глава 3. Функции………………………………………………………………………………….. 69

Строгая проверка типов……………………………………………………………………………………………………………. 71

Исходные значения для аргументов функции…………………………………………………………………………. 72

Перегрузка функции…………………………………………………………………………………………………………………… 73

Разница в типе возвращаемого значения…………………………………………………………………………. 74

Можно ли задать разные типы данных при помощи typedef?……………………………………….. 75

Можно ли задать разные типы данных при помощи const?…………………………………………… 75

Разные задачи, одно имя……………………………………………………………………………………………………. 76

Перегрузка операторов……………………………………………………………………………………………………………… 76

FAQ по перегрузке операторов…………………………………………………………………………………………. 79

Встраиваемые функции…………………………………………………………………………………………………………….. 79

Зачем полагаться на компилятор?……………………………………………………………………………………. 80

А где гарантия?…………………………………………………………………………………………………………………… 80

Когда ими пользоваться?…………………………………………………………………………………………………… 81

Новый синтаксис возвращаемого типа……………………………………………………………………………………. 81

Функции instance, static, virtual и friend…………………………………………………………………………………… 81

Упражнения………………………………………………………………………………………………………………………………… 82

Важное………………………………………………………………………………………………………………………………………… 85

Глава 4. Классы и объекты……………………………………………………………………. 87

Структуры и классы………………………………………………………………………………………………………………….. 89

Классы и конструкторы…………………………………………………………………………………………………………….. 92

Деструкторы………………………………………………………………………………………………………………………………. 94

Класс Complex……………………………………………………………………………………………………………………………. 95

Указатель this…………………………………………………………………………………………………………………………….. 97

Перегрузка унарных операторов……………………………………………………………………………………………… 98

Объекты и память…………………………………………………………………………………………………………………….. 100

Еще раз о структурах и классах…………………………………………………………………………………………….. 101

Идеальная организация программы………………………………………………………………………………………. 102

Упражнения……………………………………………………………………………………………………………………………… 106

Важное……………………………………………………………………………………………………………………………………… 112

Глава 5. Премудрости классов……………………………………………………………… 115

Статическое и динамическое выделение памяти………………………………………………………………….. 117

Выделение памяти для массивов и структур…………………………………………………………………. 118

Выделение памяти для объектов…………………………………………………………………………………….. 120

Статические члены класса……………………………………………………………………………………………………… 122

Универсальный спецификатор const……………………………………………………………………………………… 124

Перегруженный оператор присваивания и конструктор копирования………………………………. 126

Преобразование данных…………………………………………………………………………………………………………. 129

Преобразование между встроенными типами………………………………………………………………. 129

Преобразование между встроенными и пользовательскими типами………………………….. 130

Преобразование между различными пользовательскими типами данных………………… 132

Процедура преобразования в исходном объекте………………………………………………………….. 132

Процедура преобразования в целевом объекте…………………………………………………………….. 134

Упражнения……………………………………………………………………………………………………………………………… 137

Важное……………………………………………………………………………………………………………………………………… 139

Глава 6. Наследование…………………………………………………………………………. 141

Наследование…………………………………………………………………………………………………………………………… 143

Еще один пример наследования…………………………………………………………………………………………….. 147

Варианты применения наследования……………………………………………………………………………………. 149

Наследование и конструкторы………………………………………………………………………………………………. 151

Виды наследования…………………………………………………………………………………………………………………. 154

Одиночное наследование………………………………………………………………………………………………… 154

Многоуровневое наследование………………………………………………………………………………………. 155

Множественное наследование……………………………………………………………………………………….. 156

Предупреждение………………………………………………………………………………………………………………………. 157

Поэтапная разработка…………………………………………………………………………………………………………….. 158

Упражнения……………………………………………………………………………………………………………………………… 158

Важное……………………………………………………………………………………………………………………………………… 160

Глава 7. Полиморфизм…………………………………………………………………………. 163

Виртуальная функция……………………………………………………………………………………………………………… 165

Чистая виртуальная функция………………………………………………………………………………………………….. 167

Абстрактный класс………………………………………………………………………………………………………………….. 168

Связывание функций……………………………………………………………………………………………………………….. 168

Анатомия виртуальных функций……………………………………………………………………………………………. 170

Для чего применять виртуальные функции?…………………………………………………………………………. 177

Срезание объекта…………………………………………………………………………………………………………………….. 177

Виртуальные деструкторы……………………………………………………………………………………………………… 179

Вызов виртуальных функций из конструкторов/деструкторов…………………………………… 181

Виртуальные базовые классы………………………………………………………………………………………………… 181

Упражнения……………………………………………………………………………………………………………………………… 183

Важное……………………………………………………………………………………………………………………………………… 184

Глава 8. Система ввода-вывода в C++………………………………………………….. 187

Требования к системе ввода-вывода……………………………………………………………………………………… 189

Решение с использованием потоков в C++…………………………………………………………………………….. 190

Предопределенные потоковые объекты………………………………………………………………………………… 191

Библиотека iostream………………………………………………………………………………………………………………… 191

Класс istream……………………………………………………………………………………………………………………………. 192

Класс ostream…………………………………………………………………………………………………………………………… 194

Вывод символов в кодировке Unicode……………………………………………………………………………. 195

Класс iostream………………………………………………………………………………………………………………………….. 196

Манипуляторы потока……………………………………………………………………………………………………………. 196

Пользовательские манипуляторы………………………………………………………………………………………….. 199

Пользовательские манипуляторы с аргументами…………………………………………………………. 200

Работа с потоками ввода-вывода в файл………………………………………………………………………………. 202

Символьный ввод-вывод…………………………………………………………………………………………………………. 203

Открытие файла……………………………………………………………………………………………………………….. 203

Чтение данных………………………………………………………………………………………………………………….. 204

Обнаружение конца файла (EOF)…………………………………………………………………………………… 204

Закрытие файла……………………………………………………………………………………………………………….. 204

Программа копирования файлов……………………………………………………………………………………………. 204

Ввод-вывод строк…………………………………………………………………………………………………………………….. 205

Ввод-вывод записей…………………………………………………………………………………………………………………. 206

Прямой доступ…………………………………………………………………………………………………………………………. 208

Режимы открытия файла…………………………………………………………………………………………………………. 210

Строковые потоки……………………………………………………………………………………………………………………. 211

Работа с istrstream……………………………………………………………………………………………………………. 212

Ввод-вывод объектов………………………………………………………………………………………………………………. 213

Сериализация…………………………………………………………………………………………………………………………… 214

Обработка ошибок ввода-вывода………………………………………………………………………………………….. 215

Взаимодействие с файловой системой…………………………………………………………………………………… 217

Упражнения……………………………………………………………………………………………………………………………… 220

Важное……………………………………………………………………………………………………………………………………… 222

Глава 9. Расширенные возможности C++…………………………………………….. 225

Отношения включения…………………………………………………………………………………………………………….. 227

Дружественные (friend) функции и классы……………………………………………………………………………. 229

Еще одно применение дружественной функции……………………………………………………………………. 231

Предупреждение………………………………………………………………………………………………………………………. 234

Ключевое слово explicit………………………………………………………………………………………………………….. 234

Ключевое слово mutable…………………………………………………………………………………………………………. 236

Пространство имен………………………………………………………………………………………………………………….. 237

Способы применения пространства имен……………………………………………………………………………… 240

Использование оператора разрешения контекста………………………………………………………… 240

Ключевое слово using……………………………………………………………………………………………………… 241

Динамическая идентификация типа (RTTI)…………………………………………………………………………… 242

Приведение типов в C++………………………………………………………………………………………………………….. 244

static_cast………………………………………………………………………………………………………………………….. 245

dynamic_cast……………………………………………………………………………………………………………………… 246

const_cast………………………………………………………………………………………………………………………….. 248

reinterpret_cast…………………………………………………………………………………………………………………. 248

Предупреждение………………………………………………………………………………………………………………. 249

Указатели на члены классов…………………………………………………………………………………………………… 249

Упражнения……………………………………………………………………………………………………………………………… 253

Важное……………………………………………………………………………………………………………………………………… 254

Глава 10. Шаблоны……………………………………………………………………………… 257

Шаблоны функций…………………………………………………………………………………………………………………… 259

Что происходит во время компиляции?………………………………………………………………………….. 261

Шаблоны функций для пользовательских типов………………………………………………………………….. 261

Еще одна шаблонная функция……………………………………………………………………………………………….. 262

Явная специализация обобщенной функции…………………………………………………………………. 264

Функция с набором обобщенных типов………………………………………………………………………………… 264

Шаблоны и макросы……………………………………………………………………………………………………………….. 265

Сортировка на основе шаблона…………………………………………………………………………………………….. 266

Шаблоны классов……………………………………………………………………………………………………………………. 267

Шаблон класса связного списка…………………………………………………………………………………………….. 271

Полезные советы по шаблонам………………………………………………………………………………………………. 273

Вариативные шаблоны…………………………………………………………………………………………………………… 275

Области применения шаблонов……………………………………………………………………………………………… 276

Упражнения……………………………………………………………………………………………………………………………… 276

Важное……………………………………………………………………………………………………………………………………… 278

Глава 11. Обработка исключений………………………………………………………… 279

Обработка исключений в C++………………………………………………………………………………………………… 281

Работа с библиотечными классами исключений………………………………………………………………….. 284

Библиотечные исключения при создании очереди………………………………………………………. 286

Еще один пример……………………………………………………………………………………………………………… 288

Работа с пользовательскими классами исключений……………………………………………………………. 290

Полезные советы……………………………………………………………………………………………………………………… 292

Спецификация исключений…………………………………………………………………………………………………….. 293

Необработанные исключения………………………………………………………………………………………………… 294

Интеллектуальные указатели и динамические контейнеры………………………………………………… 295

Упражнения……………………………………………………………………………………………………………………………… 297

Важное……………………………………………………………………………………………………………………………………… 298

Глава 12. Стандартная библиотека шаблонов……………………………………… 301

Стандартная библиотека шаблонов……………………………………………………………………………………… 303

Компоненты STL……………………………………………………………………………………………………………………… 304

Контейнеры………………………………………………………………………………………………………………………. 304

Итераторы………………………………………………………………………………………………………………………… 305

Алгоритмы………………………………………………………………………………………………………………………… 306

Вектор (vector)………………………………………………………………………………………………………………………….. 307

Другие операции………………………………………………………………………………………………………………. 308

Вектор объектов класса Point…………………………………………………………………………………………………. 309

Список (list)………………………………………………………………………………………………………………………………. 311

Множество (set) и мультимножество (multi-set)…………………………………………………………………….. 313

Отображение (map) и мультиотображение (multi-map)………………………………………………………… 317

Стек (stack)……………………………………………………………………………………………………………………………….. 319

Очередь (queue)………………………………………………………………………………………………………………………… 320

Объект-функция………………………………………………………………………………………………………………… 322

Упражнения……………………………………………………………………………………………………………………………… 323

Важное……………………………………………………………………………………………………………………………………… 324

Предметный указатель…………………………………………………………………………. 327

Яшавант Канеткар

Яшавант Канеткар — автор книг и курсов по языкам C, C++, Java, Python, структурам данных, .NET, IoT. Его книги переведены на хинди, гуджарати, японский, корейский и китайский языки. Получил степень бакалавра в Технологическом институте имени Веермата Джиджабая (VJTI, Мумбаи) и магистра технических наук в Индийском Институте Технологий (IIT, Канпур). В настоящее время является директором нескольких IT-компаний. Был удостоен множества престижных наград за свои предпринимательские, профессиональные и академические достижения, а также за вклад в IT-образование Индии.

Summary
Aggregate Rating
3 based on 1 votes
Добавить комментарий