Язык программирования С++ - Страуструп Б.
Книга Б. Страуструпа "Язык программирования С++" дает описание языка, его ключевых понятий и основных приемов программирования на нем. Это завершенное руководство, написанное создателем языка, которое содержит описание всех средств С++, в том числе управление исключительными ситуациями, шаблоны типа (параметризованные типы данных) и множественное наследование. Книга делится на три части. Первые десять глав являются учебником, служащим введением в язык, включая подмножество собственно С. В трех последующих главах обсуждаются вопросы проектирования и создания программного обеспечения с помощью С++. Книга завершается полным справочным руководством по языку.
В книге вы найдете:
- законченный учебник и руководство по языку.
- полное освещение средств языка, нацеленных на абстрактные типы данных и объектно-ориентированное программирование.
- обсуждение программистских и технических вопросов, возникающих в процессе проектирования и создания больших программных систем.
- описание способов построения библиотек высокого класса.
- примеры реализации ключевых типов данных, определяемых пользователем, таких как графические объекты, ассоциативные массивы и потоки ввода- вывода.
Эта книга будет хорошим помощником опытному программисту, решившему использовать С++ для нетривиальных задач. Ее можно считать ключевой в любом собрании книг по С++.
Оглавление
ПРЕДВАРИТЕЛЬНЫЕ ЗАМЕЧАНИЯ
Об авторе книги:
ПРЕДИСЛОВИЕ
Выражение признательности
ПРЕДИСЛОВИЕ К ПЕРВОМУ ИЗДАНИЮ
Выражение признательности
ПРЕДВАРИТЕЛЬНЫЕ ЗАМЕЧАНИЯ
Структура книги
Замечания по реализации
Замечания по проекту языка
Историческая справка
Сравнение языков С++ и С
Эффективность и структура
Философские замечания
Замечания о программировании на языке С++
Несколько полезных советов
Замечание для программистов на С
Список литературы
ГЛАВА 1. КРАТКИЙ ОБЗОР С++ 22
1.1 ВВЕДЕНИЕ 22
1.2 Парадигмы программирования22
1.2.1 Процедурное программирование23
1.2.2 Модульное программирование .24
1.2.3 Абстракция данных.25
1.2.4 Пределы абстракции данных 27
1.2.5 Объектно-ориентированное программирование.28
1.3 "Улучшенный С"29
1.3.1 Программа и стандартный вывод .29
1.3.2 Переменные и арифметические операции.30
1.3.3 Указатели и массивы 31
1.3.4 Условные операторы и циклы31
1.3.5 Функции 32
1.3.6 Модули 33
1.4 Поддержка абстракции данных35
1.4.1 Инициализация и удаление35
1.4.2 Присваивание и инициализация 36
1.4.3 Шаблоны типа 37
1.4.4 Обработка особых ситуаций37
1.4.5 Преобразования типов38
1.4.6 Множественные реализации 39
1.5 Поддержка объектно-ориентированного программирования 40
1.5.1 Механизм вызова 40
1.5.2 Проверка типа41
1.5.3 Множественное наследование.42
1.5.4 Инкапсуляция.43
1.6 Пределы совершенства44
ГЛАВА 2. ОПИСАНИЯ И КОНСТАНТЫ 46
2.1 ОПИСАНИЯ46
2.1.1 Область видимости .47
2.1.2 Объекты и адреса .48
2.1.3 Время жизни объектов 48
2.2 ИМЕНА49
2.3 ТИПЫ49
2.3.1 Основные типы .50
2.3.2 Неявное преобразование типа .51
2.3.3 Производные типы52
2.3.4 Тип void52
2.3.5 Указатели53
2.3.6 Массивы53
2.3.7 Указатели и массивы 55
2.3.8 Структуры56
2.3.9 Эквивалентность типов .58
2.3.10 Ссылки 59
2.4 ЛИТЕРАЛЫ61
2.4.1 Целые константы61
2.4.2 Константы с плавающей точкой62
2.4.3 Символьные константы .62
2.4.4 Строки63
2.4.5 Нуль63
2.5 Поименованные константы64
2.5.1. Перечисления 65
2.6. Экономия памяти 66
2.6.1 Поля .66
2.6.2. Объединения 67
2.7 Упражнения 68
ГЛАВА 3. ВЫРАЖЕНИЯ И ОПЕРАТОРЫ 70
3.1 Калькулятор70
3.1.1 Анализатор.70
3.1.2 Функция ввода 74
3.1.3 Таблица имен.76
3.1.4 Обработка ошибок77
3.1.5 Драйвер78
3.1.6 Параметры командной строки 79
3.2 Сводка операций 79
3.2.1 Скобки.83
3.2.2 Порядок вычислений83
3.2.3 Инкремент и декремент .84
3.2.4 Поразрядные логические операции85
3.2.5 Преобразование типа86
3.2.6 Свободная память87
3.3 Сводка операторов90
3.3.1 Выбирающие операторы 90
3.3.2 Оператор goto92
3.4 Комментарии и расположение текста .93
3.5 Упражнения94
ГЛАВА 4
4.1 Введение 97
4.2 Связывание.97
4.3 Заголовочные файлы.99
4.3.1 Единственный заголовочный файл 100
4.3.2 Множественные заголовочные файлы 102
4.4 Связывание с программами на других языках. 104
4.5 Как создать библиотеку 105
4.6 Функции. 106
4.6.1 Описания функций 106
4.6.2 Определения функций. 107
4.6.3 Передача параметров 107
4.6.4 Возвращаемое значение 109
4.6.5 Параметр-массив 110
4.6.6 Перегрузка имени функции 111
4.6.7 Стандартные значения параметров. 113
4.6.8 Неопределенное число параметров 114
4.6.9 Указатель на функцию 115
4.7 Макросредства 118
4.8 Упражнения. 120
5. КЛАССЫ 122
5.1 Введение и краткий обзор. 122
5.2 Классы и члены 123
5.2.1 Функции-члены . 123
5.2.2 Классы 123
5.2.3 Ссылка на себя 124
5.2.4 Инициализация 127
5.2.5 Удаление 128
5.2.6 Подстановка 129
5.3 Интерфейсы и реализации 129
5.3.1 Альтернативные реализации 130
5.3.2 Законченный пример класса . 132
5.4 Еще о классах 135
5.4.1 Друзья 135
5.4.2 Уточнение имени члена 136
5.4.3 Вложенные классы 137
5.4.4 Статические члены 138
5.4.5 Указатели на члены. 139
5.4.6 Структуры и объединения 139
5.5 Конструкторы и деструкторы . 142
5.5.1 Локальные переменные 142
5.5.2 Статическая память. 143
5.5.3 Свободная память 144
5.5.4 Объекты класса как члены 144
5.5.5 Массивы объектов класса. 146
5.5.6 Небольшие объекты 146
5.6 Упражнения. 147
ГЛАВА 6 149
6.1 Введение и краткий обзор. 149
6.2 Производные классы 149
6.2.1 Функции-члены . 151
6.2.2 Конструкторы и деструкторы 152
6.2.3 Иерархия классов. 153
6.2.4 Поля типа. 153
6.2.5 Виртуальные функции 155
6.3 Абстрактные классы. 156
6.4 Пример законченной программы 158
6.4.1 Монитор экрана 158
6.4.2 Библиотека фигур 160
6.4.3 Прикладная программа 162
6.5 Множественное наследование 164
6.5.1 Множественное вхождение базового класса. 165
6.5.2 Разрешение неоднозначности. 165
6.5.3 Виртуальные базовые классы . 167
6.6 Контроль доступа 171
6.6.1 Защищенные члены. 171
6.6.2 Доступ к базовым классам 173
6.7 Свободная память 174
6.7.1 Виртуальные конструкторы 175
6.7.2 Указание размещения 178
6.8 Упражнения. 179
ГЛАВА 7 181
7.1 Введение 181
7.2 Операторные функции 181
7.2.1 Бинарные и унарные операции 182
7.2.2 Предопределенные свойства операций 183
7.2.3 Операторные функции и пользовательские типы 183
7.3 Пользовательские операции преобразования типа 184
7.3.1 Конструкторы . 184
7.3.2 Операции преобразования . 186
7.3.3 Неоднозначности . 187
7.4 Литералы. 189
7.5 Большие объекты 189
7.6 Присваивание и инициализация 190
7.7 Индексация 192
7.8 Вызов функции 194
7.9 Косвенное обращение. 195
7.10 Инкремент и декремент 196
7.11 Строковый класс 198
7.12 Друзья и члены 200
7.13 Предостережения 201
7.14 Упражнения 201
ГЛАВА 8. ШАБЛОНЫ ТИПА . 204
8.1 Введение 204
8.2 Простой шаблон типа 204
8.3 Шаблоны типа для списка 206
8.3.1 Список с принудительной связью 207
8.3.2 Список без принудительной связи 209
8.3.3 Реализация списка 212
8.3.4 Итерация 213
8.4 Шаблоны типа для функций. 215
8.4.1 Простой шаблон типа для глобальной функции 216
8.4.2 Производные классы позволяют ввести новые операции 217
8.4.3 Передача операций как параметров функций 218
8.4.4 Неявная передача операций . 219
8.4.5 Введение операций с помощью параметров шаблонного класса 219
8.5 Разрешение перегрузки для шаблонной функции 221
8.6 Параметры шаблона типа 222
8.7 Шаблоны типа и производные классы . 224
8.7.1 Задание реализации с помощью параметров шаблона 225
8.8 Ассоциативный массив. 225
8.9 Упражнения. 231
ГЛАВА 9 232
9.1 Обработка ошибок . 232
9.1.1 Особые ситуации и традиционная обработка ошибок 234
9.1.2 Другие точки зрения на особые ситуации 235
9.2 Различение особых ситуаций 235
9.3 Имена особых ситуаций 237
9.3.1 Группирование особых ситуаций 238
9.3.2 Производные особые ситуации 240
9.4 Запросы ресурсов 243
9.4.1 Конструкторы и деструкторы 244
9.4.2 Предостережения 246
9.4.3 Исчерпание ресурса 246
9.4.4 Особые ситуации и конструкторы 248
9.5 Особые ситуации могут не быть ошибками 249
9.6 Задание интерфейса 251
9.6.1 Неожиданные особые ситуации. 252
9.7 Неперехваченные особые ситуации 253
9.8 Другие способы обработки ошибок 254
9.9 Упражнения. 256
ГЛАВА 10. ПОТОКИ. 257
10.1 ВВЕДЕНИЕ 257
10.2 ВЫВОД 258
10.2.1 Вывод встроенных типов 259
10.2.2 Вывод пользовательских типов 260
10.3 ВВОД 261
10.3.1 Ввод встроенных типов 261
10.3.2 Состояния потока 263
10.3.3 Ввод пользовательских типов 265
10.4 Форматирование 266
10.4.1 Класс ios 266
10.4.1.1 Связывание потоков . 266
10.4.1.2 Поля вывода . 267
10.4.1.3 Состояние формата 268
10.4.1.4 Вывод целых 269
10.4.1.5 Выравнивание полей 270
10.4.1.6 Вывод плавающих чисел 270
10.4.2 Манипуляторы 271
10.4.2.1 Стандартные манипуляторы ввода-вывода 273
10.4.3 Члены ostream. 274
10.4.4 Члены istream 275
10.5 Файлы и потоки 275
10.5.1 Закрытие потоков 276
10.5.2 Строковые потоки 277
10.5.3 Буферизация 278
10.6 Ввод-вывод в С 279
10.7 Упражнения 281
ГЛАВА 11. ПРОЕКТИРОВАНИЕ И РАЗВИТИЕ 283
11.1 Введение . 283
11.2 Цели и средства 285
11.3 Процесс развития . 287
11.3.1 Цикл развития 289
11.3.2 Цели проектирования 290
11.3.3 Шаги проектирования. 291
11.3.3.1 Шаг 1: определение классов 292
11.3.3.2 Шаг 2: определение набора операций . 293
11.3.3.3 Шаг 3: указание зависимостей . 294
11.3.3.4 Шаг 4: определение интерфейсов . 294
11.3.3.5 Перестройка иерархии классов . 295
11.3.3.6 Использование моделей 295
11.3.4 Эксперимент и анализ 296
11.3.5 Тестирование 298
11.3.6 Сопровождение 298
11.3.7 Эффективность 299
11.4 Управление проектом 299
11.4.1 Повторное использование 299
11.4.2 Размер 301
11.4.3 Человеческий фактор 302
11.5 Свод правил 303
11.6 Список литературы с комментариями 304
ГЛАВА 12. ПРОЕКТИРОВАНИЕ И С++ 306
12.1 Проектирование и язык программирования 306
12.1.1 Игнорирование классов. 307
12.1.2 Игнорирование наследования 309
12.1.3 Игнорирование статического контроля типов 309
12.1.4 Гибридный проект 312
12.2 Классы. 314
12.2.1 Что представляют классы?. 315
12.2.2 Иерархии классов 316
12.2.3 Зависимости в рамках иерархии классов 318
12.2.4 Отношения принадлежности 319
12.2.5 Принадлежность и наследование 321
12.2.6 Отношения использования. 324
12.2.7 Отношения внутри класса. 325
12.2.7.1 Инварианты 326
12.2.7.2 Инкапсуляция 328
12.2.8 Программируемые отношения 328
12.3 Компоненты 330
12.4 Интерфейсы и реализации 332
12.5 Свод правил 334
ГЛАВА 13. ПРОЕКТИРОВАНИЕ БИБЛИОТЕК 335
13.1 Введение . 335
13.2 Конкретные типы 336
13.3 Абстрактные типы. 338
13.4 Узловые классы . 342
13.5 Динамическая информация о типе 344
13.5.1 Информация о типе . 346
13.5.2 Класс Type_info 347
13.5.3 Как создать систему динамических запросов о типе 349
13.5.4 Расширенная динамическая информация о типе 350
13.5.5 Правильное и неправильное использование динамической информации о типе 350
13.6 Обширный интерфейс . 351
13.7 Каркас области приложения. 354
13.8 Интерфейсные классы 355
13.9 Управляющие классы 358
13.10 Управление памятью . 361
13.10.1 Сборщик мусора 362
13.10.2 Контейнеры и удаление. 363
13.10.3 Функции размещения и освобождения 366
13.11 Упражнения 368
Бесплатно скачать электронную книгу в удобном формате, смотреть и читать:
Скачать книгу Язык программирования С++, Страуструп Б. - fileskachat.com, быстрое и бесплатное скачивание.
Скачать pdf
Ниже можно купить эту книгу по лучшей цене со скидкой с доставкой по всей России.Купить эту книгу
Скачать книгу Язык программирования С++ - Страуструп Б. - depositfiles
Скачать книгу Язык программирования С++ - Страуструп Б. - letitbit
Дата публикации:
Теги: программирование :: C++ :: программирование на C++ :: язык программирования C++ :: Страуструп :: самоучитель C++ :: проектирование библиотек :: книга :: скачать
Смотрите также учебники, книги и учебные материалы:
Следующие учебники и книги:
- Сборник параметров BIOS 1.0
- Ассемблер в задачах защиты информации, Бурдаев О.В., Иванов М.А., Тетерин И.И.
- Создание приложений Microsoft ASP .NET, Рейли Д.
- Java Programming on Linux, Meyers N.
Предыдущие статьи:
- Delphi, Готовые алгоритмы, Стивенс Р.
- Языки программирования, Разработка и реализация, Пратт Т., Зелковиц М.
- Руководство по синтаксису языка SQL - Том 2
- Руководство по синтаксису языка SQL - Том 1