Справка
x
Поиск
Закладки
Озвучить книгу
Изменить режим чтения
Изменить размер шрифта
Оглавление
Для озвучивания и цитирования книги перейдите в режим постраничного просмотра.
Дизайн и эволюция С++
Часть II
Предыдущая страница
Следующая страница
Table of contents
Предисловие
Благодарности
Обращение к читателю
Часть I
+
Часть II
-
Глава 10. Управление памятью
10.1. Введение
10.2. Отделение распределения памяти и инициализации
10.3. Выделение памяти для массива
10.4. Размещение объекта в памяти
10.5. Проблемы освобождения памяти
10.5.1. Освобождение памяти для массивов
10.6. Нехватка памяти
10.7. Автоматическая сборка мусора
10.7.1. Необязательный сборщик мусора
10.7.2. Как должен выглядеть необязательный сборщик мусора?
Глава 11. Перегрузка
11.1. Введение
11.2. Разрешение перегрузки
11.2.1. Детальное разрешение
11.2.2. Управление неоднозначностью
11.2.3. Нулевой указатель
11.2.4. Ключевое слово overload
11.3. Типобезопасная компоновка
11.3.1. Перегрузка и компоновка
11.3.2. Реализация компоновки в C++
11.3.3. Анализ пройденного пути
11.4. Создание и копирование объектов
11.4.1. Контроль допустимости копирования
11.4.2. Управление распределением памяти
11.4.3. Управление наследованием
11.4.4. Почленное копирование
11.5. Удобство нотации
11.5.1. "Умные" указатели
11.5.2. "Умные" ссылки
11.5.3. Перегрузка операторов инкремента и декремента
11.5.4. Перегрузка A>*
11.5.5. Перегрузка оператора "запятая"
11.6. Добавление в C++ операторов
11.6.1. Оператор возведения в степень
11.6.2. Операторы, определяемые пользователем
11.6.3. Составные операторы
11.7. Перечисления
11.7.1 Перегрузка на базе перечислений
11.7.2. Тип Boolean
Глава 12. Множественное наследование
12.1. Введение
12.2. Базовые классы
12.3. Виртуальные базовые классы
12.3.1. Виртуальные базовые классы и виртуальные функции
12.4. Модель размещения объекта в памяти
12.4.1. Размещение в памяти объекта виртуального базового класса
12.4.2. Виртуальные базовые классы и приведение типов
12.5. Комбинирование методов
12.6. Полемика о множественном наследовании
12.7. Делегирование
12.8. Переименование
12.9. Инициализаторы членов и базовых классов
Глава 13. Уточнения понятия класса
13.1 Введение
13.2. Абстрактные классы
13.2.1. Абстрактные классы и обработка ошибок
13.2.2. Абстрактные типы
13.2.3. Синтаксис
13.2.4. Виртуальные функции и конструкторы
13.3. Константные функцииAчлены
13.3.1. Игнорирование const при приведении типов
13.3.2. Уточнение определения const
13.3.3. Ключевое слово mutable и приведение типов
13.4. Статические функцииAчлены
13.5. Вложенные классы
13.6. Ключевое слово inherited
13.7. Ослабление правил замещения
13.7.1. Ослабление правил аргументов
13.8. Мультиметоды
13.8.1. Когда нет мультиметодов
13.9. Защищенные члены
13.10. Улучшенная генерация кода
13.11. Указатели на функцииAчлены
Глава 14. Приведение типов
14.1. Крупные расширения
14.2. Идентификация типа во время исполнения
14.2.1. Зачем нужен механизм RTTI
14.2.2. Оператор dynamic_cast
14.2.3. Правильное и неправильное использование RTTI
14.2.4. Зачем давать "опасные средства"
14.2.5. Оператор typeid()
14.2.6. Модель размещения объекта в памяти
14.2.7. Простой ввод/вывод объектов
14.2.8. Другие варианты
14.3. Новая нотация для приведения типов
14.3.1. Недостатки старых приведений типов
14.3.2. Оператор static_cast
14.3.3. Оператор reinterpret_cast
14.3.4. Оператор const_cast
14.3.5. Преимущества новых приведений типов
Глава 15. Шаблоны
15.1. Введение
15.2. Зачем нужны шаблоны
15.3. Шаблоны классов
15.3.1. Аргументы шаблонов, не являющиеся типами
15.4. Ограничения на аргументы шаблонов
15.4.1. Ограничения за счет наследования
15.4.2. Ограничения за счет использования
15.5. Устранение дублирования кода
15.6. Шаблоны функций
15.6.1. Выведение аргументов шаблона функции
15.6.2. Задание аргументов шаблона функции
15.6.3. Перегрузка шаблона функции
15.7. Синтаксис
15.8. Методы композиции
15.8.1. Представление стратегии реализации
15.8.2. Представление отношений порядка
15.9. Соотношения между шаблонами классов
15.9.1. Отношения наследования
15.9.2. Преобразования
15.9.3. ШаблоныAчлены
15.10. Инстанцирование шаблонов
15.10.1. Явное инстанцирование
15.10.2. Точка инстанцирования
15.10.3. Специализация
15.10.4. Нахождение определений шаблонов
15.11. Последствия введения шаблонов
15.11.1. Отделение реализации от интерфейса
15.11.2. Гибкость и эффективность
15.11.3. Влияние на другие компоненты C++
Глава 16. Обработка исключений
16.1. Введение
16.2. Цели и предположения
16.3. Синтаксис
16.4. Группировка
16.5. Управление ресурсами
16.5.1. Ошибки в конструкторах
16.6. Возобновление или завершение?
16.6.1. Обходные пути для реализации возобновления
16.7. Асинхронные события
16.8. Распространение на несколько уровней
16.9. Статическая проверка
16.9.1. Вопросы реализации
16.10. Инварианты
Глава 17. Пространства имен
17.1. Введение
17.2. Для чего нужны пространства имен
17.2.1. Обходные пути
17.3. Какое решение было бы лучшим?
17.4. Решение: пространства имен
17.4.1. Мнения по поводу пространств имен
17.4.2. Внедрение пространств имен
17.4.3. Псевдонимы пространства имен
17.4.4. Использование пространств имен для управления версиями
17.4.5. Технические детали
17.5. Классы и пространства имен
17.5.1. Производные классы
17.5.2. Использование базовых классов
17.5.3. Исключение глобальных статических объявлений
17.6. Совместимость с C
Глава 18. Препроцессор C
Алфавитный указатель
Данный блок поддерживает скрол*