Программирование. Принципы и практика использования C++

This document was uploaded by one of our users. The uploader already confirmed that they had the permission to publish it. If you are author/publisher or own the copyright of this documents, please report to us by using this DMCA report form.

Simply click on the Download Book button.

Yes, Book downloads on Ebookily are 100% Free.

Sometimes the book is free on Amazon As well, so go ahead and hit "Search on Amazon"

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

Author(s): Страуструп Б.
Publisher: Вильямс
Year: 2011

Language: Russian
Commentary: 1146146024
Pages: 1235

ОГЛАВЛЕНИЕ......Page 3
Предисловие ......Page 22
Глава 0. Обращение к читателям ......Page 29
0.1. Структура книги ......Page 30
0.1.1. Общие принципы ......Page 31
0.1.2. Упражнения, задачи и т.п. ......Page 32
0.2. Педагогические принципы ......Page 34
0.2.1. Порядок изложения ......Page 37
0.2.2. Программирование и языки программирования ......Page 39
0.2.3. Переносимость ......Page 40
0.4. Творческое начало и решение задач ......Page 41
0.6. Библиографические ссылки ......Page 42
0.7. Биографии ......Page 43
Глава 1. Компьютеры, люди и программирование ......Page 46
1.1. Введение ......Page 47
1.2. Программное обеспечение ......Page 48
1.3. Люди ......Page 50
1.4. Компьютерные науки ......Page 54
1.5.1. С экранами и без них ......Page 55
1.5.2. Кораблестроение ......Page 56
1.5.3. Телекоммуникации ......Page 58
1.5.4. Медицина ......Page 60
1.5.5. Информация ......Page 61
1.5.6. Вид сверху ......Page 63
1.6. Идеалы программистов ......Page 64
Часть I. Основы ......Page 71
Глава 2. Hello, World! ......Page 72
2.1. Программы ......Page 73
2.2. Классическая первая программа ......Page 74
2.3. Компиляция ......Page 77
2.4 Редактирование связей ......Page 79
2.5. Среды программирования ......Page 80
Глава 3 Объекты, типы и значения ......Page 86
3.1. Ввод ......Page 87
3.2. Переменные ......Page 89
3.3. Ввод и тип ......Page 90
3 4. Операции и операторы ......Page 92
3.5. Присваивание и инициализация ......Page 95
3.5.1. Пример: удaление повторяющихся слов ......Page 97
3.6. Составные операторы присваивания ......Page 98
3.6.2. Пример: подсчет повторяющихся слов ......Page 99
3.7. Имена ......Page 100
3.8. Типы и объекты ......Page 102
3.9. Типовая безопасность ......Page 104
3.9.1. Безопасные преобразования ......Page 105
3.9.2. Опасные преобразования ......Page 106
Глава 4. Вычисления ......Page 113
4.1. Вычисления ......Page 114
4.2. Цели и средства ......Page 116
4.3. Выражения ......Page 118
4.3.1. Константные выражения ......Page 120
4.3.2. Операторы ......Page 121
4.3.3. Преобразования ......Page 122
4.4. Инструкции ......Page 123
4.4.1. Инструкции выбора ......Page 125
4.4.2. Итерация ......Page 131
4.5. Функции ......Page 135
4.5.1. Зачем нужны функции ......Page 136
4.5.2. Объявления функций ......Page 138
4.6. Вектор ......Page 139
4.6.1. Увеличение вектора ......Page 140
4.6.2. Числовой пример ......Page 141
4.6.3. Текстовый пример ......Page 143
4.7. Свойства языка ......Page 145
Глава 5. Ошибки ......Page 152
5.1. Введение ......Page 153
5.2. Источники ошибок ......Page 155
5.3.1. Синтаксические ошибки ......Page 156
5.3.2. Ошибки, связанные с типами ......Page 157
5.3.3. Не ошибки ......Page 158
5.4. Ошибки во время редактирования связей ......Page 159
5.5. Ошибки во время выполнения программы ......Page 160
5.5.1. Обработка ошибок в вызывающем модуле ......Page 161
5.5.2. Обработка ошибок в вызываемом модуле ......Page 163
5.5.3. Сообщения об ошибках ......Page 164
5.6.1. Неправильные аргументы ......Page 166
5.6.2. Ошибки, связанные с диапазоном ......Page 167
5.6.3. Неправильный ввод ......Page 169
5.6.4. Суживающие преобразования ......Page 172
5.7. Логические ошибки ......Page 173
5.8. Оценка ......Page 175
5.9. Отладка ......Page 177
5.9.1. Практические советы по отладке ......Page 178
5.10. Пред- и постусловия ......Page 181
5.10.1. Постусловия ......Page 183
5.11. Тестирование ......Page 184
Глава 6. Создание программ ......Page 191
6.1. Задача ......Page 192
6.2. Размышления над задачей ......Page 193
6.2.2. Стратегия ......Page 194
6.3. Назад к калькулятору! ......Page 196
6.3.1. Первое приближение ......Page 197
6.3.2. Лексемы ......Page 199
6.3.3. Реализация лексем ......Page 201
6.3.4. Использование лексем ......Page 203
6.3.5. Назад к школьной доске! ......Page 204
6.4. Грамматики ......Page 206
6.4.1. Отступление: грамматика английского языка ......Page 211
6.4.2. Запись грамматики ......Page 212
6.5.1. Реализация грамматических правил ......Page 213
6.5.2. Выражения ......Page 214
6.5.3. Термы ......Page 218
6.6. Испытание первой версии ......Page 220
6.7. Испытание второй версии ......Page 225
6.8. Потоки лексем ......Page 226
6.8.1. Реализация класса Tokenstream ......Page 228
6.8.2. Считывание лексем ......Page 229
6.8.3. Считывание чисел ......Page 231
6.9. Структура программы ......Page 232
Глава 7. Завершение программы ......Page 237
7.2. Ввод и вывод ......Page 238
7.3. Обработка ошибок ......Page 240
7.4. Отрицательные числа ......Page 244
7.5. Остаток от деления: % ......Page 245
7.6. Приведение кода в порядок ......Page 247
7.6.1. Символические константы ......Page 248
7.6.2. Использование функций ......Page 250
7.6.3. Расположение кода ......Page 251
7.6.4. Комментарии ......Page 252
7.7. Исправление ошибок ......Page 254
7.8.1. Переменные и определения ......Page 257
7.8.2. Использование имен ......Page 262
7.8.3. Предопределенные имена ......Page 264
7.8.4. Все? ......Page 265
Глава 8. Технические детали: функции и прочее ......Page 269
8.1. Технические детали ......Page 270
8.2. Объявления и определения ......Page 271
8.2.1. Виды объявлений ......Page 275
8.2.2. Объявления переменных и констант ......Page 276
8.3. Заголовочные файлы ......Page 277
8.4. Область видимости ......Page 280
8.5. Вызов функции и возврат значения ......Page 285
8.5.1. Объявление аргументов и тип возвращаемого значения ......Page 286
8.5.2. Возврат значения ......Page 287
8.5.3. Передача параметров по значению ......Page 288
8.5.4. Передача параметров по константной ссылке ......Page 289
8.5.5. Передача параметров по ссылке ......Page 291
8.5.6. Сравнение механизмов передачи параметров по значению и по ссылке ......Page 294
8.5.7. Проверка аргументов и преобразование типов ......Page 296
8.5.8. Реализация вызова функции ......Page 297
8.6. Порядок вычислений ......Page 302
8.6.1. Вычисление выражения ......Page 303
8.6.2. Глобальная инициализация ......Page 304
8.7. Пространства имен 315 8.7.1. Объявления using и директивы using ......Page 306
Глава 9. Технические детали: классы и прочее ......Page 314
9.1. Типы, определенные пользователем ......Page 315
9.2. Классы и члены класса ......Page 316
9.3. Интерфейс и реализация ......Page 317
9.4.1. Структуры и функции ......Page 319
9.4.2. Функции-члены и конструкторы ......Page 321
9.4.3. Скрываем детали ......Page 322
9.4.4. Определение функций-членов ......Page 324
9.4.5. Ссылка на текущий объект ......Page 326
9.4.6. Сообщения об ошибках ......Page 327
9.5. Перечисления ......Page 328
9.6. Перегрузка операторов ......Page 330
9.7. Интерфейсы классов ......Page 332
9.7.1. Типы аргументов ......Page 333
9.7.2. Копирование ......Page 335
9.7.3. Конструкторы по умолчанию ......Page 336
9.7.4. Константные функции-члены ......Page 339
9.7.5. Члены и вспомогательные функции ......Page 340
9.8. Класс Date ......Page 342
Часть II. Ввод и вывод ......Page 349
Глава 10. Потоки ввода и вывода ......Page 350
10.1. Ввод и вывод ......Page 351
10.2. Модель потока ввода-вывода ......Page 353
10.3. Файлы ......Page 354
10.4. Открытие файла ......Page 356
10.5. Чтение и запись файла ......Page 358
10.6. Обработка ошибок ввода-вывода ......Page 360
10.7. Считывание отдельного значения ......Page 363
10.7.1. Разделение задачи на управляемые части ......Page 365
10.7.2. Отделение диалога от функции ......Page 368
10.8. Операторы вывода, определенные пользователем ......Page 369
10.9. Операторы ввода, определенные пользователем ......Page 370
10.10. Стандартный цикл ввода ......Page 371
10.11 Чтение структурированного файла ......Page 373
10 11.1. Представление в памяти ......Page 374
10.11.2. Считывание структурированных значений ......Page 376
10.11.3. Изменение представления ......Page 380
Глава 11. Настройка ввода и вывода ......Page 385
11.1. Регулярность и нерегулярность ......Page 386
11.2.1. Вывод целых чисел ......Page 387
11.2.2. Ввод целых чисел ......Page 389
11.2.3. Вывод чисел с плавающей точкой ......Page 390
11.2.4. Точность ......Page 391
11.2.5. Поля ......Page 393
11.3.1. Режимы открытия файлов ......Page 394
11.3.2. Бинарные файлы ......Page 395
11.3.3. Позиционирование в файлах ......Page 398
11.4. Потоки строк ......Page 399
11.5. Ввод, ориентированный на строки ......Page 401
11.6. Классификация символов ......Page 402
11.7. Использование нестандартных разделителей ......Page 404
11.8. И еще много чего ......Page 411
Глава 12. Вывод на экран ......Page 416
12.1. Почему графика? ......Page 417
12.2. Вывод на дисплей ......Page 418
12.3. Первый пример ......Page 420
12.4. Использование библиотеки графического пользовательского интерфейса ......Page 423
12.5. Координаты ......Page 424
12.6. Класс Shape ......Page 425
12.7.1. Графические заголовочные файлы и функция main ......Page 426
12.7.2. Почти пустое окно ......Page 427
12.7.3. Оси координат ......Page 428
12.7.4. График функции ......Page 431
12.7.5. Многоугольники ......Page 432
12.7.6. Прямоугольник ......Page 433
12.7.8. Текст ......Page 435
12.7.9. Изображения ......Page 436
12.7.10. Й многое другое ......Page 438
12.8. Запуск программы ......Page 439
12.8.1. Исходные файлы ......Page 440
Глава 13. Графические классы ......Page 443
13.1. Обзор графических классов ......Page 444
13.2. Классы Point и Line ......Page 446
13.3. Класс Lines ......Page 448
13.4. Класс Color ......Page 451
13.5. Класс Line_style ......Page 453
13.6. Класс Open_polyline ......Page 456
13.7. Класс Closed_polyline ......Page 457
13.8. Класс Polygon ......Page 458
13.9. Класс Rectangle ......Page 461
13.10. Управление неименованными объектами ......Page 465
13.11. Класс Text ......Page 467
13.12. Класс Circle ......Page 469
13.13. Класс Ellipse ......Page 471
13.14. Класс Marked_poryline ......Page 472
13.15. Класс Marks ......Page 474
13.16. Класс Mark ......Page 475
13.17. Класс Image ......Page 476
Глава 14. Проектирование графических классов ......Page 483
14.1.1. Типы ......Page 484
14.1.2. Операции ......Page 486
14.1.3. Именование ......Page 487
14.2. Класс Shape ......Page 489
14.2.1. Абстрактный класс ......Page 491
14.2.2. Управление доступом ......Page 492
14.2.3. Рисование фигур ......Page 495
14.2.4. Копирование и изменчивость ......Page 499
14.3. Базовые и производные классы ......Page 500
14.3.1. Схема объекта ......Page 502
14.3.2. Вывод классов и определение виртуальных функций ......Page 504
14.3.3. Замещение ......Page 505
14.3.4. Доступ ......Page 506
14.3.5. Чисто виртуальные функции ......Page 507
14.4. Преимущества объектно-ориентированного программирования ......Page 509
Глава 15. Графические функции и данные ......Page 515
15.2. Построение простых графиков ......Page 516
15.3. Класс Function ......Page 520
15.3.1. Аргументы по умолчанию ......Page 521
15.3.2. Новые примеры ......Page 523
15.4. Оси ......Page 524
15.5. Аппроксимация ......Page 526
15.6. Графические данные ......Page 532
15.6.1. Чтение файла ......Page 533
15.6.2. Общая схема ......Page 535
15.6.3. Масштабирование данных ......Page 536
15.6.4. Построение графика ......Page 537
Глава 16. Графические пользовательские интерфейсы ......Page 544
16.1. Альтернативы пользовательского интерфейса ......Page 545
16.2. Кнопка Next ......Page 546
16.3. Простое окно ......Page 548
16.3.1. Функции обратного вызова ......Page 549
16.3.2. Цикл ожидания ......Page 552
16.4.1. Класс Widget ......Page 554
16.4.3. Классы Inbox и Outbox ......Page 556
16.4.4. Класс Menu ......Page 557
16.5. Пример ......Page 558
16.6. Инверсия управления ......Page 561
16.7. Добавление меню ......Page 563
16.8. Отладка программы графического пользовательского интерфейса ......Page 568
Глава 17. Векторы и свободная память ......Page 574
17.1. Введение ......Page 575
17.2. Основы ......Page 577
17.3. Память, адреса и указатели 598 17.3.1. Оператор sizeof ......Page 581
17.4. Свободная память и указатели ......Page 582
17.4.1. Размещение в свободной памяти ......Page 584
17.4.2. Доступ с помощью указателей ......Page 585
17.4.3. Диапазоны ......Page 586
17.4.4. Инициализация ......Page 588
17.4.5. Нулевой указатель ......Page 589
17.4.6. Освобождение свободной памяти ......Page 590
17.5. Деструкторы ......Page 592
17.5.1. Обобщенные указатели ......Page 594
17.5.2. Деструкторы и свободная память ......Page 595
17.7. Указатели на объекты класса ......Page 597
17.8. Путаница с типами: void* и операторы приведения типов ......Page 599
17.9. Указатели и ссылки ......Page 601
17.9.1. Указатели и ссылки как параметры функций ......Page 603
17.9.2. Указатели, ссылки и наследование ......Page 604
17.9.3. Пример: списки ......Page 605
17.9.4. Операции над списками ......Page 607
17.9.5. Использование списков ......Page 608
17.10. Указатель this ......Page 609
17.10.1. Еще раз об использовании списков ......Page 612
Глава 18. Векторы и массивы ......Page 618
18.1. Введение ......Page 619
18.2. Копирование ......Page 620
18.2.1. Конструкторы копирования ......Page 621
18.2.2. Копирующее присваивание ......Page 623
18.2.3. Терминология, связанная с копированием ......Page 625
18.3. Основные операции ......Page 626
18.3.1. Явные конструкторы ......Page 628
18.3.2. Отладка конструкторов и деструкторов ......Page 629
18.4. Доступ к элементам вектора 651 18.4.1. Перегрузка ключевого слова const ......Page 633
18.5. Массивы ......Page 634
18.5.1. Указатели на элементы массива ......Page 635
18.5.2. Указатели и массивы ......Page 638
18.5.3. Инициализация массива ......Page 640
18.5.4. Проблемы с указателями ......Page 641
18.6.1. Палиндромы, созданные с помощью класса string ......Page 644
18.6.2. Палиндромы, созданные с помощью массива ......Page 645
18.6.3. Палиндромы, созданные с помощью указателей ......Page 646
Глава 19. Векторы, шаблоны и исключения ......Page 653
19.1. Проблемы ......Page 654
19.2. Изменение размера ......Page 657
19.2.1. Представление ......Page 658
19.2.2. Функции reserve and capacity ......Page 659
19.2.3. Функция resize ......Page 660
19.2.5. Присваивание ......Page 661
19.2.6. Предыдущая версия класса vector ......Page 663
19.3.1. Типы как шаблонные параметры ......Page 664
19.3.2. Обобщенное программирование ......Page 667
19.3.3. Контейнеры и наследование ......Page 670
19.3.4. Целые типы как шаблонные параметры ......Page 671
19.3.6. Обобщение класса vector ......Page 673
19.4. Проверка диапазона и исключения ......Page 677
19.4.1. Примечание: вопросы проектирования ......Page 678
19.4.2. Признание: макрос ......Page 680
19.5. Ресурсы и исключения ......Page 681
19.5.1. Потенциальные проблемы управления ресурсами ......Page 682
19.5.2. Получение ресурсов — это инициализация ......Page 684
19.5.3. Гарантии ......Page 685
19.5.4. Класс auto_ptr ......Page 687
19.5.5. Принцип RAII для класса vector ......Page 688
Глава 20. Контейнеры и итераторы ......Page 694
20.1. Хранение и обработка данных ......Page 695
20.1.1. Работа с данными ......Page 696
20.1.2. Обобщение кода ......Page 697
20.2. Принципы библиотеки STL ......Page 699
20.3. Последовательности и итераторы 724 20.3.1. Вернемся к примерам ......Page 706
20.4. Связанные списки ......Page 707
20.4.1. Операции над списками ......Page 709
20.4.2. Итерация ......Page 710
20.5. Еще одно обобщение класса vector ......Page 712
20.6. Пример: простой текстовый редактор ......Page 714
20.6.1. Строки ......Page 716
20.6.2. Итерация ......Page 717
20.7. Классы vector, list и string 742 20.7.1. Операции insert и erase ......Page 723
20.8. Адаптация нашего класса vector к библиотеке STL ......Page 725
20.9. Адаптация встроенных массивов к библиотеке STL ......Page 728
20.10. Обзор контейнеров ......Page 729
20.10.1. Категории итераторов ......Page 732
Глава 21. Алгоритмы и ассоциативные массивы ......Page 738
21.1. Алгоритмы стандартной библиотеки ......Page 739
21.2. Простейший алгоритм: find() ......Page 740
21.2.1. Примеры использования обобщенных алгоритмов ......Page 742
21.3. Универсальный алгоритм поиска: fmd_if() ......Page 743
21.4. Объекты-функции ......Page 745
21.4.1. Абстрактная точка зрения на функции-объекты ......Page 746
21.4.2. Предикаты на членах класса ......Page 748
21.5. Численные алгоритмы ......Page 749
21.5.1. Алгоритм accumulate() ......Page 750
21.5.2. Обобщение алгоритма accumulateQ ......Page 751
21.5.3. Алгоритм inner_product ......Page 753
21.5.4. Обобщение алгоритма inner_product() ......Page 754
21.6.1. Ассоциативные массивы ......Page 755
21.6.2. Обзор ассоциативных массивов ......Page 758
21.6.3. Еще один пример ассоциативного массива ......Page 761
21.6.4. Алгоритм unordered_map() ......Page 763
21.6.5. Множества ......Page 766
21.7. Копирование ......Page 767
21.7.2. Итераторы потоков ......Page 768
21.7.3. Использование класса set для поддержания порядка ......Page 771
21.8. Сортировка и поиск ......Page 772
Часть IV. Дополнительные темы ......Page 779
Глава 22. Идеалы и история ......Page 780
22.1.1. Цели и философия языка программирования ......Page 781
22.1.2. Идеалы программирования ......Page 783
22.1.3. Стили и парадигмы ......Page 791
22.2. Обзор истории языков программирования ......Page 794
22.2.1. Первые языки программирования ......Page 795
22.2.2. Корни современных языков программирования ......Page 797
22.2.3. Семейство языков Algol ......Page 803
22.2.4. Язык программирования Simula ......Page 810
22.2.5. Язык программирования С ......Page 813
22.2.6. Язык программирования С++ ......Page 816
22.2.7. Современное состояние дел ......Page 819
22.2.8. Источники информации ......Page 821
Глава 23. Обработка текста ......Page 826
23.2. Строки ......Page 827
23.4. Ассоциативные контейнеры ......Page 832
23.4.1. Детали реализации ......Page 838
23.5. Проблема ......Page 840
23.6. Идея регулярных выражений ......Page 842
23.7. Поиск с помощью регулярных выражений ......Page 845
23.8. Синтаксис регулярных выражений ......Page 848
23.8.1. Символы и специальные символы ......Page 849
23.8.3. Повторения ......Page 850
23.8.4. Группировка ......Page 851
23.8.6. Наборы символов и диапазоны ......Page 852
23.8.7. Ошибки в регулярных выражениях ......Page 854
23.9. Сравнение регулярных выражений ......Page 856
23.10. Ссылки ......Page 860
Глава 24. Числа ......Page 865
24.2. Размер, точность и переполнение ......Page 866
24.2.1. Пределы числовых диапазонов ......Page 870
24.3. Массивы ......Page 871
24.4. Многомерные массивы в стиле языка С ......Page 872
24.5. Библиотека Matrix ......Page 873
24.5.1. Размерности и доступ ......Page 874
24.5.2. Одномерный объект класса Matrix ......Page 877
24.5.3. Двумерный объект класса Matrix ......Page 881
24.5.4. Ввод-вывод объектов класса Matrix ......Page 883
24.5.5. Трехмерный объект класса Matrix ......Page 884
24.6. Пример: решение систем линейных уравнений ......Page 885
24.6.1. Классическое исключение Гаусса ......Page 886
24.6.2. Выбор ведущего элемента ......Page 888
24.6.3. Тестирование ......Page 889
24.7. Случайные числа ......Page 890
24.8. Стандартные математические функции ......Page 892
24.9. Комплексные числа ......Page 893
24.10. Ссылки ......Page 895
Глава 25. Программирование встроенных систем ......Page 900
25.1. Встроенные системы ......Page 901
25.2. Основные понятия ......Page 904
25.2.1. Предсказуемость ......Page 907
25.2.2. Принципы ......Page 908
25.2.3. Сохранение работоспособности после сбоя ......Page 909
25.3. Управление памятью ......Page 911
25.3.1. Проблемы со свободной памятью ......Page 913
25.3.2. Альтернатива универсальной свободной памяти ......Page 916
25.3.3. Пример пула ......Page 917
25.3.4. Пример стека ......Page 918
25.4. Адреса, указатели и массивы ......Page 919
25.4.2. Проблема: дисфункциональный интерфейс ......Page 920
25.4.3. Решение: интерфейсный класс ......Page 924
25.4.4. Наследование и контейнеры ......Page 927
25.5.1. Операции с битами и байтами ......Page 931
25.5.2. Класс bitset ......Page 935
25.5.3. Целые числа со знаком и без знака ......Page 937
25.5.4. Манипулирование битами ......Page 941
25.5.5. Битовые поля ......Page 943
25.5.6. Пример: простое шифрование ......Page 945
25.6. Стандарты программирования ......Page 950
25.6.1. Каким должен быть стандарт программирования? ......Page 951
25.6.2. Примеры правил ......Page 953
25.6.3. Реальные стандарты программирования ......Page 958
Глава 26. Тестирование ......Page 965
26.1. Чего мы хотим 992 26.1.1. Предостережение ......Page 967
26.3. Тестирование ......Page 968
26.3.1. Регрессивные тесты ......Page 969
26.3.2. Модульные тесты ......Page 970
26.3.3. Алгоритмы и не алгоритмы ......Page 977
26.3.4. Системные тесты ......Page 985
26.3.5. Тестирование классов ......Page 991
26.3.6. Поиск предположений, которые не выполняются ......Page 994
26.5 Отладка ......Page 996
26.6. Производительность ......Page 997
26.6.1. Измерение времени ......Page 999
26.7. Ссылки ......Page 1001
Глава 27. Язык программирования С ......Page 1005
27.1. Языки С и C++: братья ......Page 1006
27.1.1. Совместимость языков С и C++ ......Page 1008
27.1.2. Свойства языка C++, которых нет в языке С ......Page 1010
27.1.3. Стандартная библиотека языка ......Page 1012
27.2.2. Проверка типов аргументов функций ......Page 1013
27.2.3. Определения функций ......Page 1015
27.2.4. Вызов функций, написанных на языке С, из программы на языке C++, и наоборот ......Page 1017
27.2.5. Указатели на функции ......Page 1019
27.3. Второстепенные языковые различия ......Page 1020
27.3.1. Дескриптор пространства имен struct ......Page 1021
27.3.3. Определения ......Page 1022
27.3.4. Приведение типов в стиле языка С ......Page 1024
27.3.5. Преобразование указателей типа void* ......Page 1025
27.3.7. Пространства имен ......Page 1026
27.4. Свободная память ......Page 1027
27.5. Строки в стиле языка С ......Page 1029
27.5.1. Строки в стиле языка С и ключевое слово const ......Page 1031
27.5.2. Операции над байтами ......Page 1032
27.5.4. Вопросы стиля ......Page 1033
27.6.1. Вывод ......Page 1034
27.6.2. Ввод ......Page 1035
27.6.3. Файлы ......Page 1037
27.7. Константы и макросы ......Page 1038
27.8. Макросы ......Page 1039
27.8.1. Макросы, похожие на функции ......Page 1040
27.8.2. Синтаксис макросов ......Page 1041
27.8.3. Условная компиляция ......Page 1042
27.9. Пример: интрузивные контейнеры ......Page 1043
Часть V. Приложения ......Page 1053
Приложение А. Краткий обзор языка ......Page 1054
А. 1. Общие сведения ......Page 1055
А. 1.1. Терминология ......Page 1056
А. 1.3. Комментарии ......Page 1057
А.2.1. Целочисленные литералы ......Page 1058
А.2.4. Символьные литералы ......Page 1060
А.2.6. Указательные литералы ......Page 1061
А.3.1. Указательные литералы ......Page 1062
А.4.1. Область видимости ......Page 1063
А.4.2. Класс памяти ......Page 1064
А.4.3. Время жизни ......Page 1065
А.5. Выражения ......Page 1066
А.5.2. Неявное преобразование типа ......Page 1071
А. 5.5. Логические выражения ......Page 1074
А.5.7. Операторы приведения ......Page 1075
А.6. Инструкции ......Page 1076
А.7. Объявления ......Page 1078
А.8. Встроенные типы ......Page 1079
А.8.1. Указатели ......Page 1080
А.8.2. Массивы ......Page 1082
А.9. Функции ......Page 1083
А.9.1. Разрешение перегрузки ......Page 1084
А.9.2. Аргументы по умолчанию ......Page 1085
А.9.4. Спецификации связей ......Page 1086
А.11. Перечисления ......Page 1087
А. 12.1. Доступ к членам класса ......Page 1088
А. 12.2. Определения членов класса ......Page 1091
А. 12.3. Создание, уничтожение и копирование ......Page 1092
А. 12.4. Производные классы ......Page 1094
А. 12.5. Битовые поля ......Page 1098
А. 13. Шаблоны ......Page 1099
А.13.2. Конкретизация шаблонов ......Page 1100
А. 13.3. Шаблонные типы членов-классов ......Page 1101
А. 14. Исключения ......Page 1102
А. 15. Пространства имен ......Page 1104
А. 17.1. Директива #include ......Page 1105
А. 17.2. Директива #define ......Page 1106
Приложение Б. Обзор стандартной библиотеки ......Page 1107
Б. 1. Обзор ......Page 1108
Б. 1.1. Заголовочные файлы ......Page 1109
Б. 1.2. Пространство имен std ......Page 1111
Б.2. Обработка ошибок ......Page 1112
Б.2.1. Исключения ......Page 1113
Б.3. Итераторы ......Page 1114
Б.3.1. Модель итераторов ......Page 1115
Б.3.2. Категории итераторов ......Page 1117
Б.4. Контейнеры ......Page 1119
Б.4.1. Обзор ......Page 1120
Б.4.2. Типы членов ......Page 1121
БАЗ. Конструкторы, деструкторы и присваивания ......Page 1122
Б.4.6. Операции над стеком и двусторонней очередью ......Page 1123
Б.4.8. Размер и емкость ......Page 1124
Б.4.10. Операции над ассоциативными контейнерами ......Page 1125
Б.5. Алгоритмы ......Page 1126
Б.5.1. Немодицифирующие алгоритмы для последовательностей ......Page 1127
Б.5.2. Алгоритмы, модифицирующие последовательности ......Page 1128
Б.5.3. Вспомогательные алгоритмы ......Page 1131
Б.5.4. Сортировка и поиск ......Page 1132
Б.5.5. Алгоритмы для множеств ......Page 1134
Б.5.6.Кучи ......Page 1135
Б.5.8. Функции min и max ......Page 1136
Б.6.1. Вставки ......Page 1137
Б.6.2. Объекты-функции ......Page 1138
Б.6.3. Класс pair ......Page 1139
Б.7. Потоки ввода-вывода ......Page 1140
Б.7.1. Иерархия потоков ввода-вывода ......Page 1141
Б.7.3. Операции ввода ......Page 1142
Б.7.4. Операции вывода ......Page 1143
Б.7.6. Стандартные манипуляторы ......Page 1144
Б.8.1. Классификация символов ......Page 1145
Б.8.2. Строки ......Page 1146
Б.8.3. Сравнение регулярных выражений ......Page 1147
Б.9.1. Предельные значения ......Page 1149
Б.9.2. Стандартные математические функции ......Page 1151
Б.9.3. Комплексные числа ......Page 1152
Б.9.5. Обобщенные числовые алгоритмы ......Page 1153
Б.10.1. Файлы ......Page 1154
Б. 10.2. Семейство функций printf() ......Page 1155
Б. 10.3. Строки в стиле языка С ......Page 1159
Б.10.4. Память ......Page 1160
Б.10.5. Дата и время ......Page 1161
Б. 10.6. Другие функции ......Page 1163
Б. 11. Другие библиотеки ......Page 1164
Приложение В. Начало работы со средой разработки Visual Studio ......Page 1165
В.3. Создание и запуск программ ......Page 1166
В.3.2. Используйте заголовочный файл stdlibfacilities.h ......Page 1167
В.3.6. Выполнение программы ......Page 1168
В.4. Что дальше ......Page 1169
Приложение Г. Инсталляция библиотеки FLTK ......Page 1170
Г.2. Загрузка библиотеки FLTK ......Page 1171
Г.4. Использование библиотеки FLTK в среде Visual Studio ......Page 1172
Г.5. Как тестировать, если не все работает ......Page 1173
Приложение Д. Реализация графического пользовательского интерфейса ......Page 1174
Д.1. Реализация обратных вызовов ......Page 1175
Д.2. Реализация класса Widget ......Page 1176
Д.З. Реализация класса Window ......Page 1177
Д.4. Реализация класса Vector_ref ......Page 1178
Д.5. Пример: манипулирование объектами класса Widget ......Page 1179
Глоссарий ......Page 1183
Библиография ......Page 1190
Предметный указатель ......Page 1194