- Артикул:00-01047975
- Автор: Страуструп Б.
- ISBN: 5-94074-005-7
- Обложка: Мягкая обложка
- Издательство: ДМК пресс (все книги издательства)
- Город: Москва
- Страниц: 448
- Год: 2000
- Вес: 1270 г
В книге, написанной создателем языка C++ Бьерном Страуструпом, представлено описание процесса проектирования и разработки языка программирования C++.
Здесь изложены цели, принципы и практические ограничения, наложившие отпечаток на структуру и облик C++, обсужден дизайн недавно добавленных в язык средств: шаблонов, исключений, идентификации типа во время исполнения и пространств имен. Автор анализирует решения, принятые в ходе работы над языком, и демонстрирует, как правильно применять «реальный объектно-ориентированный язык программирования».
Книга удобно организована, поучительна, написана с юмором. Описание ключевых идей даст начинающему пользователю ту основу, на которой позже он выстроит свое понимание всех деталей языка. Опытный программист найдет здесь обсуждение принципиальных вопросов проектирования, что позволит ему лучше понять язык, с которым он работает.
Содержание
Предисловие
Благодарности
Обращение к читателю
Часть I
Глава 1. Предыстория C++
1.1. Язык Simula и распределенные системы
1.2. Язык C и системное программирование
1.3. Немного об авторе книги
Глава 2. Язык С with Classes
2.1. Рождение C with Classes
2.2. Обзор языковых возможностей
2.3. Классы
2.4. Эффективность исполнения
2.4.1. Встраивание
2.5. Модель компоновки
2.6. Статический контроль типов
2.7. Почему C?
2.8 Проблемы синтаксиса
2.9. Производные классы
2.10. Модель защиты
2.11. Гарантии времени исполнения
2.12. Менее существенные средства
2.13. Что не реализовано в C with Classes
2.14. Рабочая обстановка
Глава 3. Рождение С++
3.1. От C with Classes к C++
3.2. Цели С++
3.3. Компилятор Cfront
3.4. Возможности языка
3.5. Виртуальные функции
3.6. Перегрузка
3.7. Ссылки
3.8. Константы
3.9. Управление памятью
3.10. Контроль типов
3.11. Второстепенные возможности
3.12. Языки C и C++
3.13. Инструменты для проектирования языка
3.14. Книга «Язык программирования С++»
3.15. Статья «Whatis?»
Глава 4. Правила проектирования языка C++
4.1. Правила и принципы
4.2. Общие правила
4.3. Правила поддержки проектирования
4.4. Технические правила
4.5. Правила поддержки низкоуровневого программирования
4.6. Заключительное слово
Глава 5. Хронология 1985–1993 гг.
5.1. Введение
5.2. Версия 2.0
5.2.1. Обзор возможностей
5.3. Аннотированное справочное руководство
5.3.1. Обзор ARM
5.4. Стандартизация ANSI и ISO
5.4.1. Обзор возможностей
Глава 6. Стандартизация
6.1. Что такое стандарт?
6.2. Работа комитета
6.3. Как велась работа
6.4. Расширения
6.5. Примеры предлагавшихся расширений
Глава 7. Заинтересованность и использование
7.1. Рост интереса к C++
7.2. Преподавание и изучение C++
7.3. Пользователи и приложения
7.3.1. Первые пользователи
7.3.2. Сферы применения C++
7.4. Коммерческая конкуренция
Глава 8. Библиотеки
8.1. Введение
8.2. Проектирование библиотеки C++
8.3. Ранние библиотеки
8.4. Другие библиотеки
8.5. Стандартная библиотека
Глава 9. Перспективы развития языка С++
9.1. Введение
9.2. Оценка пройденного пути
9.3. Всего лишь мост?
9.4. Что может сделать C++ более эффективным
Часть II
Глава 10. Управление памятью
10.1. Введение
10.2. Отделение распределения памяти и инициализации
10.3. Выделение памяти для массива
10.4. Размещение объекта в памяти
10.5. Проблемы освобождения памяти
10.6. Нехватка памяти
10.7. Автоматическая сборка мусора
Глава 11. Перегрузка
11.1. Введение
11.2. Разрешение перегрузки
11.3. Типобезопасная компоновка
11.4. Создание и копирование объектов
11.5. Удобство нотации
11.6. Добавление в C++ операторов
11.7. Перечисления
Глава 12. Множественное наследование
12.1. Введение
12.2. Базовые классы
12.3. Виртуальные базовые классы
12.4. Модель размещения объекта в памяти
12.5. Комбинирование методов
12.6. Полемика о множественном наследовании
12.7. Делегирование
12.8. Переименование
12.9. Инициализаторы членов и базовых классов
Глава 13. Уточнения понятия класса
13.1 Введение
13.2. Абстрактные классы
13.3. Константные функцииAчлены
13.4. Статические функцииAчлены
13.5. Вложенные классы
13.6. Ключевое слово inherited
13.7. Ослабление правил замещения
13.8. Мультиметоды
13.9. Защищенные члены
13.10. Улучшенная генерация кода
13.11. Указатели на функцииAчлены
Глава 14. Приведение типов
14.1. Крупные расширения
14.2. Идентификация типа во время исполнения
14.3. Новая нотация для приведения типов
Глава 15. Шаблоны
15.1. Введение
15.2. Зачем нужны шаблоны
15.3. Шаблоны классов
15.4. Ограничения на аргументы шаблонов
15.5. Устранение дублирования кода
15.6. Шаблоны функций
15.7. Синтаксис
15.8. Методы композиции
15.9. Соотношения между шаблонами классов
15.10. Инстанцирование шаблонов
15.11. Последствия введения шаблонов
Глава 16. Обработка исключений
16.1. Введение
16.2. Цели и предположения
16.3. Синтаксис
16.4. Группировка
16.5. Управление ресурсами
16.6. Возобновление или завершение?
16.7. Асинхронные события
16.8. Распространение на несколько уровней
16.9. Статическая проверка
16.10. Инварианты
Глава 17. Пространства имен
17.1. Введение
17.2. Для чего нужны пространства имен
17.3. Какое решение было бы лучшим?
17.4. Решение: пространства имен
17.5. Классы и пространства имен
17.6. Совместимость с C
Глава 18. Препроцессор C
Алфавитный указатель