Главная    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
Предметный указатель
Перегрузка оператора взятия индекса      28
Перегрузка операторов      215
Перегрузка операторов инкремента и декремента      219
Перегрузка поиск операторной функции      59
Перегрузка порядок вычисления      48
Перегрузка сравнение с переопределением и сокрытием      188
Перегрузка, виртуальных функций      181
Перегрузка, инфиксная нотация      60
Передача аргументов      113
Перекомпиляция, как избежать      32 235
Переменные, кодирование типа в имени      34
Переменные, ограничение области видимости      51
Переносимость, директива #if      69
Переносимость, нулевые указатели      35
Переопределение невидимых функций      191
Переопределение, механизм      193
Переопределение, определение      195
Переопределение, сравнение с перегрузкой и сокрытием      188
Перехват исключений      156
Перехват строковых литералов      153
Переходник (thunk)      197
Перечисляемые константы и литералы, определенные с помощью #define      64
Перечисляемые константы, инициализация статических членов      142
Перечисляемые константы, магические числа      19
Перечисляемые константы, точка объявления      58
Платформенная независимость, литералы и константы      19
Платформенная независимость, преобразования      74
Повторное использование глобальных переменных      20
Повторное использование кода      258 233
Повторное использование, прозрачный ящик      см. «Наследование»
Подвыражения, порядок вычисления      45
Подобъект базового класса, адрес      175
Подобъект базового класса, инициализация      125 129 185
Подстановка контейнеров      227
Подсчет ссылок      215
Полиморфизм, алгоритм с переменной и постоянной частью      180
Полиморфизм, брандмауэр      171
Полиморфизм, ветвление по коду типа      170
Полиморфизм, виртуальные функции, вызов из конструкторов и деструкторов      184
Полиморфизм, виртуальный конструктор копирования      188
Полиморфизм, гибкость шаблонных методов      180
Полиморфизм, динамическое связывание      169
Полиморфизм, доминирование      198
Полиморфизм, кодирование типов      169
Полиморфизм, невиртуальный вызов      178
Полиморфизм, перегрузка      181
Полиморфизм, с аргументами по умолчанию      182
Полиморфизм, связи между компонентами      171
Полиморфизм, сокрытие невиртуальных функций      177
Полиморфизм, сокрытие, виртуальной присваивание      186
Полиморфизм, сокрытие, виртуальные статические функции-члены      174
Полиморфизм, сокрытие, виртуальных функций      181
Полиморфизм, сокрытие, исключения из правил      176
Полиморфизм, сокрытие, невиртуальный деструктор базового класса адреса подобъектов базовых классов      175
Полиморфизм, сокрытие, неопределенное поведение      173
Полиморфизм, сокрытие, перегрузка      188
Понижающее приведение      85
Поперечное приведение      250
Порядок вычислений      см. «Приоритеты»
Преобразование для опроса возможностей      250
Преобразование для приведения к указателю на виртуальный базовый класс      129
Преобразование как предпочтительная альтернатива staticcast      85 125
Преобразование на неполные типы      93
Преобразование на указатели на производный класс      83
Преобразование на члены класса      110
Преобразование неявное, для инициализации формальных аргументов      98
Преобразование неявное, из производного класса в открытый базовый      110
Преобразование неявное, контравариантность      109
Преобразование неявное, неоднозначность      85
Преобразование неявное, с помощью конструкторов      89
Преобразование посредством void *      74
Преобразование указателей      80
Преобразование указателя на многомерный массив      83
Преобразование, reinterpretcast      75 94
Преобразование, временные объекты      101
Преобразование, время жизни временных объектов      101
Преобразование, дельта-арифметика для адресов объектов классов      92
Преобразование, зависимость от платформы      74
Преобразование, имени массива в указатель      83
Преобразование, инициализация ссылок      102
Преобразование, использование функций вместо      86
Преобразование, квалификаторов      80
Преобразование, константные указатели и имена массивов      84
Преобразование, контравариантность      109
Преобразование, корректировка значения this при вызове виртуальной функции      197
Преобразование, неоднозначность      107
Преобразование, оператор constcast      95 103 206 210
Преобразование, оператор dynamic_cast для задания интимных вопросов о типе      247
Преобразование, передача по значению      100
Преобразование, передача по ссылке      100
Преобразование, повышающие степень константности      79
Преобразование, понижающие приведения      85
Преобразование, приведение неполных типов      94
Преобразование, срезка объектов производного класса      77
Преобразование, статические приведения      95
Преобразование, формальные аргументы инициализация временными объектами      98
Преобразование, формальных аргументов      98
Препроцессор NDEBUG, таинственные ошибки      67
Препроцессор, выбор реализации класса с помощью #if      70
Препроцессор, константные выражения      68
Препроцессор, макрос assert      71
Препроцессор, область видимости литералов      63
Препроцессор, определение литералов с помощью #define      63
Препроцессор, отладка      67
Препроцессор, отладочные версии      67
Препроцессор, псевдофункции      65
Препроцессор, утверждения, побочные эффекты      71
Приведение      см. также «void *»
Приведение в случае множественного наследования      92
Приведение в старом стиле      94 231
Приведение нединамическое      см. «Статические приведения»
Приведение неполных типов      93
Приведение статическое      95
Приведение указателя на базовый класс к указателю на производный класс      см. «Понижающее приведение»
Приведение, reinterpret_cast      75 93
Приведение, проблемы в ходе сопровождения      81 95 96
Приоритеты операторов      217
Приоритеты операторов и ассоциативность      48 50
Приоритеты операторов, $, $ (оператор запятая)      47
Приоритеты операторов, && (логический оператор)      47
Приоритеты операторов, ? (условный оператор)      47
Приоритеты операторов, обзор      44
Приоритеты операторов, оператор взятия индекса      28
Приоритеты операторов, оператор указания      50
Приоритеты операторов, перегрузка операторов      48
Приоритеты операторов, размещающий оператор new      46
Приоритеты операторов, уровни приоритетов      49
Приоритеты операторов, фиксированный порядок вычислений      47
Приоритеты операторов, || (логический оператор)      47
Присваивание и инициализация      112 122
Присоединяемые классы      233
Проваливание      29
Проектирование иерархий, арифметические ошибки при вычислении адреса      237
Проектирование иерархий, ветвление по кодам типов      241
Проектирование иерархий, вырожденные иерархии      237
Проектирование иерархий, запросы о типе во время выполнения      246
Проектирование иерархий, защищенный доступ      230
Проектирование иерархий, интерфейсные классы      233
Проектирование иерархий, классы-протоколы      233
Проектирование иерархий, конкретные открытые базовые классы      236
Проектирование иерархий, космические иерархии      243
Проектирование иерархий, массивы объектов класса      225
Проектирование иерархий, наследование      238
Проектирование иерархий, опрос возможностей      249
Проектирование иерархий, открытое наследование      233
Проектирование иерархий, повторное использование кода      233
Проектирование иерархий, подстановка контейнеров      227
Проектирование иерархий, семантика значения      237
Проектирование иерархий, срезка      237
Проектирование иерархий, управление на основе типов      241
Проектирование классов, агрегирование и использование      211
Проектирование классов, интерфейсы get/set      202
Проектирование классов, константные данные-члены      205
Проектирование классов, константные функции-члены, механизм работы      208
Проектирование классов, оператор декремента      219
Проектирование классов, оператор инкремента      219
Проектирование классов, операторы-члены и друзья класса      218
Проектирование классов, отбрасывание const      210
Проектирование классов, перегрузка операторов      215
Проектирование классов, приоритеты операторов      217
Проектирование классов, семантика      209
Проектирование классов, синтаксис      207
Проектирование классов, ссылочные данные-члены      205
Проектирование классов, шаблонные операции копирования      222
Пространство имен безымянное      59
Пространство имен и #define      63
Прямая инициализация аргументов      136
Псевдонимы и отношение агрегирования / использования      211
Псевдонимы, ссылки как      24 102
Псевдофункции, определение      65
Размещающий оператор new, вызов конструктора      113 122 136
Размещающий оператор new, подмена глобальных new и delete      149
Размещающий оператор new, порядок вычисления аргументов      46
Реализация класса, выбор с помощью #if      70
Связи между компонентами, глобальные переменные      20
Связи между компонентами, обход защиты доступа      232
Связи между компонентами, полиморфизм      171
Связывание динамическое      169
Связывание, ссылки с lvalue      24 102
Связывание, ссылки с функцией      25
Семантика значения      237
Сержантский оператор      54
Синтаксис и ассоциативность      48 50
Синтаксис оператора ->      61
Синтаксис операторов      59
Синтаксис подвыражений      45
Синтаксис, const, квалификатор типа, перестановка      56
Синтаксис, volatile, квалификатор типа, перестановка      56
Синтаксис, ассоциативность и предшествование      48
Синтаксис, внешние типы      59
Синтаксис, выделение лексем      54
Синтаксис, инициализаторы, не путать с массивами      43
Синтаксис, инфиксная нотация      60
Синтаксис, конкретизация шаблонов      54
Синтаксис, константные указатели      55
Синтаксис, константные функции-члены      207
Синтаксис, лексический анализ      54
Синтаксис, максимальный кусок      54
Синтаксис, массивы, не путать с инициализаторами      43
Синтаксис, обзор      44
Синтаксис, ограничение области видимости переменных      51
Синтаксис, оператор указания      50
Синтаксис, перегрузка операторов      48
Синтаксис, перегрузка, инфиксная нотация      60
Синтаксис, перестановка квалификаторов типа      56
Синтаксис, перестановка квалификаторов типов      56
Синтаксис, поиск операторной функции      59
Синтаксис, порядок вычислений фиксированный      47
Синтаксис, порядок вычислений, $, $ (оператор запятая)      47
Синтаксис, порядок вычислений, && (логический оператор)      47
Синтаксис, порядок вычислений, ? (условный оператор)      47
Синтаксис, порядок вычислений, || (логический оператор)      47
Синтаксис, предложение for, ограничение области видимости переменной      51
Синтаксис, предложение for, сравнение с while      53
Синтаксис, предшествование, автоинициализация      57
Синтаксис, проблемы      50
Синтаксис, размещающий оператор new      46
Синтаксис, спецификатор компоновки      59
Синтаксис, спецификаторы в объявлениях, порядок следования      55
Синтаксис, статические типы      59
Синтаксис, уровни приоритетов      49
Синтаксис, функция или объект      56
Соглашения об именовании, кодирование типа переменной в ее имени      34
Соглашения об именовании, мнемонические имена      18
Соглашения об именовании, ограничение доступа      34
Соглашения об именовании, описание отношений владения      212
Соглашения об именовании, простота      34
Соглашения об именовании, самодокументированный код      18
Сокрытие данных      см. «Ограничение доступа»
Сокрытие невиртуальных функций      177
Сокрытие, сравнение с перегрузкой и переопределением      188
Сопровождение      75 81 95 96 «Удобочитаемость
Сопровождение, владение в контейнерах      213
Сопровождение, выделение памяти для скаляров и массивов      146
Сопровождение, идиомы      37
Сопровождение, инициализация статических членов      143
Сопровождение, коды типов      171
Сопровождение, мнемонические имена      18
Сопровождение, неполные объявления      31
Сопровождение, порядок квалификаторов в объявлениях      56
Сопровождение, предложение for      51 53
Сопровождение, приоритеты операторов      49
Сопровождение, проваливание      29
Сопровождение, соглашения об именовании      17
Сопровождение, способы облегчить взаимозаменяемые контейнеры      228
Сопровождение, стандарты кодирования      41 47
Сопровождение, управление на основе типов      242
Сопровождение, утверждения      72
Спецификаторы объявлений порядок следования      55
Список инициализации членов, порядок следования      124
Срезка и проектирование иерархий      237
Срезка объектов производных классов      77
Ссылки и указатели      23
Ссылки как псевдонимы      24 102
Ссылки на локальные переменные      158
Ссылки на массивы      25
Ссылки на неполные типы      93
Ссылки нулевые      24
Ссылки, возврат из функции      24
Ссылки, инициализация      102
Ссылки, квалификаторы const и volatile      24
Ссылки, приведение типа      25
Ссылки, привязка к функции      25
Статические переменные, инициализация во время выполнения      132
Статические типы      59
Строковые литералы, как объекты исключений      152
Счетчик Шварца      133
Темные закоулки языка С++, адрес возвращенного не-lvalue      222
Темные закоулки языка С++, вызов чисто виртуальной функции      179
Темные закоулки языка С++, гарантии относительно reinterpretcast      93
Темные закоулки языка С++, генерируемый компилятором оператор присваивания подобъектам виртуального базового класса      127
Темные закоулки языка С++, индексирование целого      28
Темные закоулки языка С++, индексирование целого, копирование строкового литерала во временный объект при употреблении в выражении throw      155
Темные закоулки языка С++, индексирование целого, применение квалификатора к typedef у функции      57
Темные закоулки языка С++, индексирование целого, результат условного оператора — lvalue      27
Темные закоулки языка С++, индексирование целого, структура предложения switch      29
Темные закоулки языка С++, индексирование целого, точка объявления перечисляемой константы      58
Темные закоулки языка С++, неприменимость квалификаторов к ссылкам      24
Темные закоулки языка С++, область видимости при вызове функции-члена operator delete      175
Темные закоулки языка С++, переопределение невидимых функций      191
Типы исключений      153
Удобочитаемость      39 (см. «Комментарии» «Сопровождение
Указатели и ссылки      23
Указатели на локальные переменные      158
Указатели на неполные типы      93
Указатели на указатель на производный класс      83
Указатели на функции      25
Указатели на члены класса      23 109
Указатели, владение      213
Указатели, возбуждение исключений      155
Указатели, контейнеры, содержащие указатели      213
Указатели, преобразование      80
Указатели, приоритеты операторов      50
Улыбка Чеширского кота      см. «Bridge паттерн»
Управление памятью и ресурсами для скаляров и массивов      144
Управление памятью и ресурсами, auto_ptr      166
Управление памятью и ресурсами, возбуждение исключений в виде указателей      156
Управление памятью и ресурсами, временные объекты в качестве объектов исключений      156
Управление памятью и ресурсами, захват ресурса есть инициализация      162
Управление памятью и ресурсами, исправление ошибки путем добавления static      161
1 2 3
blank
Реклама
blank
blank
HR
@Mail.ru
       © Электронная библиотека попечительского совета мехмата МГУ, 2004-2024
Электронная библиотека мехмата МГУ | Valid HTML 4.01! | Valid CSS! О проекте