Джефф Элджер
Искусство программирования на С++ отнюдь не сводится к знанию синтаксиса языка. Хорошая программа доставляет удовольствие – она проста и изящна одновременно. Однако переход от среднего, “ремесленного” уровня владения С++ к высотам мастерства практически не освещается в литературе. Большинство программистов действуют методом проб и ошибок, самостоятельно находя давно придуманные решения. Автор, программист с 20 – летним стажем, пытается запомнить этот досадный пробел. Он описывает множество полезных приемов, условно разделенных на тир большие темы: нетривиальное использование указателей, иерархии классов и управление памятью. Досконально разобраны и другие полезные темы, в числе которых – создание шаблонов, обработка исключений и оптимизация программ. В книге рассматривается эталонный стандарт ANSI, не связанный ни с каким конкретным компилятором или визуальной средой. Книга ориентирована на программистов, обладающих опытом программирования на С++.
Метки темы:
каталог ссылок по теме – C++
Table of contents :
Содержание……Page 4
Извинения… или вроде того……Page 10
Часть 1. Введение и краткий обзор……Page 12
Дао C++……Page 14
Три великие идеи C++……Page 16
Как читать эту книгу……Page 17
Несколько слов о стиле программирования……Page 18
const……Page 20
Стековые и динамические объекты……Page 24
Области действия……Page 26
Перегрузка……Page 29
Видимость……Page 30
Конструкторы……Page 34
Деструкторы……Page 41
Присваивание……Page 42
Перегрузка операторов……Page 47
Проблемы……Page 56
Шаблоны – усовершенствованные макросы……Page 57
Параметризованные функции……Page 58
Передача параметра……Page 59
Комбинации простых и параметризованных типов……Page 60
Небезопасные типы в переменных класса……Page 61
Синтаксис инициирования исключений……Page 64
Синтаксис перехвата исключений……Page 67
Конструкторы и деструкторы……Page 68
Условные обозначения……Page 70
Часть 2. Косвенные обращения……Page 72
Глупые указатели……Page 74
Параметризованные умные указатели……Page 76
Иерархия умных указателей……Page 77
Арифметические операции с указателями……Page 78
Разыменование значения NULL……Page 79
Отладка и трассировка……Page 81
Кэширование……Page 83
Семантика ведущих указателей……Page 86
Конструирование……Page 87
Копирование……Page 88
Присваивание……Page 89
Прототип шаблона ведущего указателя……Page 90
Подсчет объектов……Page 91
Указатели для чтения/записи……Page 93
Дублирование интерфейса……Page 94
Маскировка указываемого объекта……Page 95
Грани……Page 97
Преобразование указываемого объекта в грань……Page 98
Кристаллы……Page 99
Вариации на тему граней……Page 100
Инкапсуляция указываемого объекта……Page 103
Обеспечение согласованности……Page 104
Грани и ведущие указатели……Page 106
Полиморфные указываемые объекты……Page 107
Посредники……Page 108
Функторы……Page 109
Проверка границ и присваивание……Page 112
Имитация многомерных массивов……Page 113
Виртуальный оператор []……Page 114
Простой класс разреженного массива……Page 115
Курсоры и разреженные массивы……Page 116
Операторы преобразования и оператор ->……Page 117
Итераторы……Page 118
Пассивные итераторы……Page 119
Убогие, но распространенные варианты……Page 120
Лучшие варианты……Page 121
Итератор абстрактного массива……Page 122
Операторы коллекций……Page 124
Мудрые курсоры и надежность итераторов……Page 125
Частные копии коллекций……Page 127
Внутренние и внешние итераторы……Page 128
Временная пометка……Page 130
Пример……Page 132
Транзакции……Page 138
Образы и указатели……Page 139
Простой указатель образов……Page 140
Стеки образов……Page 141
Образы автоматических объектов……Page 142
Образы указателей……Page 145
Транзакции и отмена……Page 146
Транзакции и блокировки……Page 147
Класс ConstPtr……Page 148
Класс LockPtr……Page 150
Создание и уничтожение объектов……Page 151
Упрощенное создание объектов……Page 152
Вложенные блокировки……Page 153
Взаимные блокировки и очереди……Page 154
Оптимизация объема……Page 155
Несколько прощальных слов……Page 156
Часть 3. Снова о типах……Page 158
Гомоморфные иерархии классов……Page 160
Нормальное наследование……Page 161
Инкапсуляция производных классов……Page 162
Множественная передача……Page 163
Двойная передача……Page 164
Гетероморфная двойная передача……Page 165
Передача более высокого порядка……Page 166
Группировка передач и преобразования……Page 167
Это еще не все……Page 168
Производящие функции……Page 170
Оптимизация с применением производящих функций……Page 171
Локализованное использование производящих функций……Page 172
Снова о двойной передаче: промежуточные базовые классы……Page 173
Объекты классов……Page 174
Информация о классе……Page 175
Еще несколько слов об уничтожающих функциях……Page 176
Определение класса по объекту……Page 177
Представители……Page 178
Основные концепции……Page 180
Производящие функции……Page 181
Неведущие указатели……Page 182
Ведущие указатели……Page 184
Снова о двойной передаче……Page 185
Удвоенная двойная передача……Page 186
Самомодификация и переходимость……Page 188
Нетривиальные распределенные архитектуры……Page 190
Часть 4. Управление памятью……Page 192
Простой список свободной памяти……Page 194
Наследование операторов new и delete……Page 197
Конструирование с разделением фаз……Page 198
Уничтожение с разделением фаз……Page 199
Глобальное управление……Page 200
Управление памятью с применением ведущих указателей……Page 201
Перспективы……Page 205
Поблочное освобождение памяти……Page 206
Списки свободных потоков……Page 209
Базовый класс с подсчетом ссылок……Page 211
Ведущие указатели с подсчетом ссылок……Page 212
Дескрипторы с подсчетом ссылок……Page 213
Подсчет ссылок и ведущие указатели……Page 214
Деление по классам……Page 215
Деление по средствам доступа……Page 216
Пространства стека и кучи……Page 217
Мама, откуда берутся указатели?……Page 218
Поиск указателей……Page 221
Ведущие указатели……Page 224
Вариации……Page 228
Пространства объектов……Page 230
Последовательное копирование……Page 233
Внешние объекты……Page 234
Алгоритм Бейкера: уход и кормление в C++……Page 235
Базовый класс VoidPtr……Page 237
Пул ведущих указателей……Page 238
Алгоритм уплотнения……Page 239
Перспективы……Page 240
Периметр……Page 242
Внутри периметра……Page 243
Анализ экземпляров……Page 244
Перебор графа объектов……Page 245
Шаблон сильного дескриптора……Page 246
Итераторы ведущих указателей……Page 247
Перебор указателей……Page 249
Сборка мусора и уплотнение на месте……Page 252
Концепции “матери всех объектов”……Page 253
Организация памяти……Page 254
Перебор внутри периметра……Page 255
Итоговые перспективы……Page 256
Приложение. Java против C++……Page 258
Reviews
There are no reviews yet.