Меню сайта |
|
|
|
Новости |
|
|
|
Темы сайта |
|
|
|
Темы раздела |
|
|
|
Форма входа |
|
|
|
Поиск |
|
|
|
Статистика |
|
Онлайн всего: 1 Гостей: 1 Пользователей: 0
|
|
|
Приветствую Вас, Гость · RSS |
30.11.2024, 08:41 |
Б. Страуструп "Язык программирования С++"
[ Скачать с сервера (2.87 Mb)
]
| 21.07.2009, 14:46 |
Бьерн Страуструп. Язык программирования С++
Оглавление
ПРЕДВАРИТЕЛЬНЫЕ ЗАМЕЧАНИЯ..................................................................................................................8 Об авторе книги: .............................................................................................................................................8 ПРЕДИСЛОВИЕ..................................................................................................................................................9 Выражение признательности .......................................................................................................................10 ПРЕДИСЛОВИЕ К ПЕРВОМУ ИЗДАНИЮ ......................................................................................................11 Выражение признательности .......................................................................................................................11 ПРЕДВАРИТЕЛЬНЫЕ ЗАМЕЧАНИЯ................................................................................................................12 Структура книги...........................................................................................................................................12 Замечания по реализации...............................................................................................................................13 Упражнения...................................................................................................................................................13 Замечания по проекту языка..........................................................................................................................13 Историческая справка...................................................................................................................................14 Сравнение языков С++ и С.............................................................................................................................15 Эффективность и структура .......................................................................................................................16 Философские замечания ................................................................................................................................17 Замечания о программировании на языке С++ .............................................................................................18 Несколько полезных советов.........................................................................................................................19 Замечание для программистов на С ..............................................................................................................19 Список литературы ......................................................................................................................................20 ГЛАВА 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 Бьерн Страуструп. Язык программирования С++ 3 2.3.1 Основные типы ................................................................................................................................50 2.3.2 Неявное преобразование типа ..........................................................................................................51 2.3.3 Производные типы...........................................................................................................................52 2.3.4 Тип void.............................................................................................................................................52 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 Оператор goto..................................................................................................................................92 3.4 Комментарии и расположение текста ...................................................................................................93 3.5 Упражнения.............................................................................................................................................94 ГЛАВА 4.............................................................................................................................................................97 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 Исчерпание ресурса......................................................................................................................... 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 Человеческий фактор..................................................................................................................... 302 11.5 Свод правил .......................................................................................................................................... 303 11.6 Список литературы с комментариями................................................................................................ 304 ГЛАВА 12. ПРОЕКТИРОВАНИЕ И С++......................................................................................................... 306 12.1 Проектирование и язык программирования......................................................................................... 306 12.1.1 Игнорирование классов................................................................................................................... 307 2.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
|
Категория: Программирование | Добавил: Админ
|
Просмотров: 1171 | Загрузок: 785
| Комментарии: 1
| Рейтинг: 0.0/0 |
|
Добавлять комментарии могут только зарегистрированные пользователи. [ Регистрация | Вход ]
|