Главная    Ex Libris    Книги    Журналы    Статьи    Серии    Каталог    Wanted    Загрузка    ХудЛит    Справка    Поиск по индексам    Поиск    Форум   
blank
Авторизация

       
blank
Поиск по указателям

blank
blank
blank
Красота
blank
Дьюхэрст С.К. — Скользкие места C++ Как избежать проблем при проектировании и компиляции ваших программ
Дьюхэрст С.К. — Скользкие места C++ Как избежать проблем при проектировании и компиляции ваших программ



Обсудите книгу на научном форуме



Нашли опечатку?
Выделите ее мышкой и нажмите Ctrl+Enter


Название: Скользкие места C++ Как избежать проблем при проектировании и компиляции ваших программ

Автор: Дьюхэрст С.К.

Аннотация:

Вы держите в руках руководство по тому, как не допускать и исправлять 99% типичных, разрушительных и просто любопытных ошибок при проектировании и реализации программ на языке C++. Эту книгу можно рассматривать также, как взгляд посвященного на нетривиальные особенности и приемы программирования на C++.
Обсуждаются как наиболее распространенные "ляпы", имеющиеся почти в любой программе на C++, так и сложные ошибки в использовании синтаксиса, препроцессора, преобразований типов, инициализации, управления памятью и ресурсами, полиморфизма, а также при проектировании классов и иерархий. Все ошибки и их последствия обсуждаются в контексте. Подробно описываются способы разрешения указанных проблем.
Автор знакомит читателей с идиомами и паттернами проектирования, с помощью которых можно решать типовые задачи. Читатель также узнает много нового о плохо понимаемых возможностях C++, которые применяются в продвинутых программах и проектах.
В книге рассказывается, как миновать наиболее серьезные опасности, подстерегающие программиста на C++.
Издание предназначено для всех программистов, желающих научиться писать правильные и корректно работающие программы на языке С++.


Язык: ru

Рубрика: Computer science/

Статус предметного указателя: Готов указатель с номерами страниц

ed2k: ed2k stats

Год издания: 2006

Количество страниц: 262

Добавлена в каталог: 08.04.2009

Операции: Положить на полку | Скопировать ссылку для форума | Скопировать ID
blank
Предметный указатель
#define, и пространства имен      63
#define, определение литералов      63
#define, определение псевдофункций      65
#if, директива, выбор реализации класса      70
#if, директива, на практике      71
#if, директива, независимость от платформы      69
#if, директива, переносимость      69
#if, директива, применение для отладки      67
$, $ (оператор запятая)      47
&& (логический оператор)      47
-> (оператор стрелка)      61
<<< (сержантский оператор)      54
? (условный оператор)      47
Acyclic Visitor, паттерн      252
assert, макрос      72
auto_ptr, шаблон      38 166
Bridge, паттерн      32
Catch-обработчики, порядок      158
Command, паттерн      233
Composite, паттерн      233 235
const, квалификатор типа для ссылок      24
const, квалификатор типа перестановка      56
constcast, оператор      95 103 206 210
cv-квалификаторы      cм. «const квалификатор «volatile квалификатор
Decorator, паттерн      179 233
delete [], оператор      145
delete [], оператор, область видимости и активация      151
delete [], оператор, подмена      149
dynamiccast, оператор для указателя на подобъект виртуального базового класса      125
dynamiccast, оператор и преобразования      105
dynamiccast, оператор, задание интимных вопросов о типе      247
dynamiccast, оператор, инициализация виртуального базового класса по умолчанию      129
dynamiccast, оператор, как предпочтительная альтернатива static_cast      85
dynamiccast, оператор, неоднозначность      105
dynamiccast, оператор, опрос возможностей      250
Factory Method, паттерн      192 228
for, предложение, ограничение области видимости переменной      51
for, предложение, сравнение с while      53
free и delete      145
lvalue, возврат из функции      24
lvalue, как результат вычисления условного оператора      27
lvalue, неизменяемое      26 64
lvalue, определение      26
lvalue, связывание ссылки с      24 102
malloc и new      145
Monostate, паттерн      173
NDEBUG, таинственные ошибки      67
Null Object, паттерн      234 235 243
operator delete      175
operator new, выделение памяти для скаляров      144
operator new, область видимости и активация      151
operator new, ошибки при выделении памяти      148
operator new, подмена      149
POD-классы (добрые старые данные)      121
Prototype, паттерн      188 192 234
Proxy, паттерн      242
reinterpretcast      75 93 129
set/get, интерфейсы      202
Singleton, паттерн      21 133 173
staticcast      95 231
Strategy, паттерн      241
switch, предложение      29
Template Method, паттерн      180
vector, сравнение с массивом      44 145 167
Visitor, паттерн      182 191 252
void *      74
volatile, квалификатор типа перестановка      56
volatile, квалификатор типа ссылки      24
vptr (указатель на vtbl)      193
vtbl (таблица виртуальных функций)      194
while, предложение, сравнение с for      53
Абстрагирование данных для типов исключений      153
Абстрагирование данных, цель      202
Автоинициализация      57
Агрегирование и использование      211
Адреса, арифметические ошибки      75 85 94 237
Адреса, возвращенного не-lvalue      222
Адреса, подобъектов базовых классов      175
Адреса, функций-членов      см. «Указатели на
Акронимы      36
Акцессоры      см. «Интерфейсы get/set»
Алгоритмы, переменная и постоянная часть      180
Анонимные временные объекты как объекты исключений      156
Анонимные временные объекты как результат инициализации копированием      134
Анонимные временные объекты как результат постфиксных ++ и –      221
Анонимные временные объекты, время жизни      101
Анонимные временные объекты, инициализация ссылки на const      102
Анонимные временные объекты, инициализация формального параметра-ссылки      98
Анонимные временные объекты, передача функциональных объектов по значению      113
Ассоциативность и приоритеты      48
Ассоциативность, проблемы      50
Базовый язык С++, логические операторы      27
Базовый язык С++, оператор взятия индекса      28
Базовый язык С++, предложение switch      29
Базовый язык С++, проваливание в switch      29
Базовый язык С++, условный оператор      28
Безымянное пространство имен      59
Брандмауэр      171
Взятия индекса оператор, встроенный      28
Видимость, сравнение с доступностью      30
Виртуальное присваивание      186
Виртуальные статические функции-члены      174
Виртуальные функции, вызов из конструкторов и деструкторов      184
Виртуальные функции, невиртуальный вызов      178
Виртуальные функции, перегрузка      181
Виртуальные функции, с аргументами по умолчанию      182
Виртуальные функции, чистые, вызов      179
Виртуальный конструктор, идиома      cм. также «Prototype паттерн»
Внешние типы      59
Временные объекты      101
Временные объекты, преобразования      102
Выражение throw      155
Вырожденные иерархии      237
Вычислительные конструкторы      140
Глобальные переменные      20
Декремент, оператор      219
Дельта-арифметика, адреса объектов классов      92
Дельта-арифметика, корректировка значения this при вызове виртуальной функции      197
Дельта-арифметика, понижающее приведение      85
Дельта-арифметика, приведение неполных типов      94
Деструкторы, вызов виртуальных функций из      184
Динамическое связывание      169
Доминирование      198
Заголовочные файлы, счетчик Шварца      133
Захват ресурса как инициализация      38 162
Идиомы, auto_ptr      38
Идиомы, pimpl      cм. «Паттерны Bridge»
Идиомы, виртуальный конструктор      188
Идиомы, захват ресурса как инициализация      162
Идиомы, интеллектуальный указатель      62 234
Идиомы, операции копирования      37
Идиомы, функциональный объект      234
Иерархии классов      cм. «Проектирование иерархий»
Имена массивов и константные указатели      83
Индексирование, имени массива      28
Индексирование, указателей      28
Индексирование, целых указателями      28
Инициализаторы, путаница с объявлением массивов      43
Инициализация аргументов по умолчанию применение      21
Инициализация аргументов, прямая      136
Инициализация базового класса в конструкторе копирования      129
Инициализация виртуальных базовых классов      125
Инициализация и присваивание      112 122
Инициализация сравнение с перегрузкой      22
Инициализация ссылок      102
Инициализация статических данных во время выполнения, порядок      132
Инициализация статических членов в конструкторе      142
Инициализация формальных аргументов временными объектами      98
Инициализация, автоинициализация      57
Инициализация, область видимости переменных      115
Инициализация, операции копирования      117
Инициализация, оптимизация возвращаемого значения      138
Инициализация, паттерн Singleton      21
Инициализация, передача аргументов      113
Инициализация, побитовое копирование объектов классов      120
Инициализация, порядок членов в списке инициализации      124
Инициализация, прямая, сравнение с копированием      134
Инкремент, оператор      219
Интеллектуальный указатель, идиома      62 234
Интерфейсные классы      127 233 235
Интерфейсы get/set      202
Инфиксная нотация      60 215
История изменений      17
Квалификаторы типов const, перестановка      56
Квалификаторы типов volatile, перестановка      56
Квалификаторы типов ссылки      24
Квалификаторы, преобразование      80
Классы, POD (добрые старые данные)      121
Классы, интерфейсные      127
Классы, ограничение доступа      30
Классы, чисто виртуальный базовый класс      34
Ковариантные возвращаемые типы      192
Кодирование, краткость      16
Коды типов      169 241
Комментарии      16 (см. также «Сопровождение» «Удобочитаемость
Комментарии излишние      16
Комментарии о проваливании      29
Комментарии, самодокументированный код      16
Конкретные открытые базовые классы      236
Константное выражение      68
Константные данные-члены      205
Константные объекты и литералы      26
Константные указатели и имена объектов      84
Константные указатели и указатели на const      79
Константные указатели, определение      55
Константные указатели, преобразования, повышающие степень константности      79
Константные функции-члены, механизм работы      208
Константные функции-члены, отбрасывание const      210
Константные функции-члены, семантика      209
Константные функции-члены, синтаксис      207
Константы и литералы      20
Константы, присваивание      206
Конструкторы вычислительные      140
Конструкторы и преобразования      89
Конструкторы, вызов виртуальных функций из      184
Конструкторы, идиома виртуального конструктора      188
Конструкторы, инициализация и присваивание      122
Конструкторы, инициализация статических членов      142
Конструкторы, реализация с помощью шаблонных функций-членов      222
Контейнеры, содержащие указатели      213
Контравариантность      109
Космические иерархии      243
Лексический анализ      54
Литералы и константные объекты      26
Литералы и константы      19
Литералы, определение с помощью #define      63
Логические операторы      27 47
Локальные объекты, время жизни      160
Локальные объекты, затирание статических переменных      159
Локальные объекты, идиоматические трудности      160
Локальные объекты, исчезающие фреймы стека      158
Магические числа      18
Макросы, побочные эффекты      28 65
Максимальный кусок, определение      54
Максимальный кусок, примеры      39 54
Массивы и векторы      145
Массивы и синтаксис инициализатора      43
Массивы массивов      56 84
Массивы объектов класса      225
Массивы, освобождение памяти      145
Массивы, перестановка квалификаторов типа      56
Массивы, преобразование указателя на многомерный массив      83
Массивы, ссылки на      25
Мудрствование, излишнее      39
Наследование и проектирование иерархий      233 238
Наследование, ограничение доступа      34
Невиртуальный деструктор базового класса адреса подобъектов базовых классов      175
Невиртуальный деструктор и виртуальный статические функции-члены      174
Невиртуальный деструктор, исключения из правил      176
Невиртуальный деструктор, неопределенное поведение      173
Неполные типы для уменьшения числа зависимостей      31
Неполные типы, приведение      93
Неявные преобразования и ссылки      102
Неявные преобразования из производного класса в открытый базовый      110
Неявные преобразования при инициализации формальных аргументов      98
Неявные преобразования с помощью конструктора      89
Неявные преобразования, контравариантность      109
Неявные преобразования, неоднозначность результата      85
Нуль, нулевые ссылки      24
Нуль, нулевые указатели      35
Нуль, результат dynamiccast      107
Область видимости литералов, определенных с помощью #define      63
Область видимости локальная, проблемы      160
Область видимости переменных, ограничение      51
Обработка исключений      148 152 165
Объекты классов, побитовое копирование      120
Ограничение доступа и абстрагирование данных      202
Ограничение доступа и видимость      30
Ограничение доступа, наследование      34 230
Ограничение доступа, описание      30
Ограничение доступа, паттерн Bridge      32
Операторы в базовом языке С++      27
Операторы взятия индекса, встроенные      28
Операторы логические      27
Операторы неоднозначные      86
Операторы порядок вычисления      45
Операторы преобразования альтернативы      89
Операторы преобразования и приведения      34
Операторы преобразования назначение      87
Операторы приведения типов      35
Операторы, $, $ (запятая)      47
Операторы, && (логический)      47
Операторы, -> (стрелка)      61
Операторы, <<< (сержантский)      54
Операторы, ? (условный)      47
Операторы, поиск операторной функции      59
Операторы, преобразования типов      35
Операторы, размещающие new      46
Операторы, || (логический)      47
Операции копирования, запрет      119
Операции копирования, идиома      37
Операции копирования, инициализация      117
Операции копирования, шаблонные      222
Опережающее объявление класса      см. «Неполное объявление»
Опрос возможностей      249
Оптимизация возвращаемого значения      138
Оптимизация именованного возвращаемого значения      141
Освобождение выделенных из кучи объектов      166
Освобождение скаляров и массивов      144
Отбрасывание const      210
Открытое наследование      233
Отладка, директива #if      67
Отладка, недостижимый код      68
Параллельные иерархии      227
Паттерны, Acyclic Visitor      252
Паттерны, Bridge      32
Паттерны, Command      233
Паттерны, Composite      233 235
Паттерны, Decorator      179 233
Паттерны, Factory Method      192 228
Паттерны, Monostate      173
Паттерны, Null Object      234 235 243
Паттерны, Prototype      188 192 234
Паттерны, Proxy      242
Паттерны, Singleton      21 133 173
Паттерны, Strategy      241
Паттерны, Template Method      180
Паттерны, Visitor      182 191 252
Перегрузка и инициализация аргументов по умолчанию      22
Перегрузка оператора ->      61
1 2 3
blank
Реклама
blank
blank
HR
@Mail.ru
       © Электронная библиотека попечительского совета мехмата МГУ, 2004-2024
Электронная библиотека мехмата МГУ | Valid HTML 4.01! | Valid CSS! О проекте