Дьюхэрст С.К., Скользкие места С++. Как избежать проблемы при проектировании и компиляции ваших программ
серия: Профессиональная серия от Addison-Wesley
ДМК Пресс, 2006 г., 264 стр., 5-94074-083-9, 0-321-12518-5 , 235*165*12 мм., тираж: 1000
Описание книги
Вы держите в руках руководство по тому, как не допускать и исправлять 99% типичных, разрушительных и просто любопытных ошибок при проектировании и реализации программ на языке C++. Эту книгу можно рассматривать также, как взгляд посвященного на нетривиальные особенности и приемы программирования на C++.
Обсуждаются как наиболее распространенные "ляпы", имеющиеся почти в любой программе на C++, так и сложные ошибки в использовании синтаксиса, препроцессора, преобразований типов, инициализации, управления памятью и ресурсами, полиморфизма, а также при проектировании классов и иерархий. Все ошибки и их последствия обсуждаются в контексте. Подробно описываются способы разрешения указанных проблем.
Автор знакомит читателей с идиомами и паттернами проектирования, с помощью которых можно решать типовые задачи. Читатель также узнает много нового о плохо понимаемых возможностях C++, которые применяются в продвинутых программах и проектах. На сайте http://www.semantics.org можно найти полный код примеров из книги.
В книге рассказывается, как миновать наиболее серьезные опасности, подстерегающие Программиста на C++. Программисты найдут в ней Практические рекомендации, которые позволят им стать настоящими экспертами.
Издание предназначено для всех программистов, желающих научиться писать правильные и корректно работающие программы на языке C++.
Скачать, но не бесплатно эту книгу можно в интернет-магазинах
Читать онлайн
Доступен для чтения фрагмент книги
Ключевые слова
Поделиться ссылкой на книгу
Содержание книги
Благодарности
Глава 1. Основы
Совет 1. Избыточное комментирование
Совет 2. Магические числа
Совет З. Глобальные переменные
Совет 4. Отличайте перегрузку от инициализации
аргументов
по умолчанию
Совет 5. О неправильной интерпретации ссылок
Совет 6. О неправильной интерпретации const
Совет 7. Не забывайте о тонкостях базового языка
Совет 8. Отличайте доступность от видимости
Совет 9. О неграмотности
Лексика
Нулевые указатели
Акронимы
Совет 10. Не игнорируйте идиомы
Совет 11. Не мудрствуйте лукаво
Совет 12. Не ведите себя как дети
Глава 2. Синтаксис
Совет 13. Не путайте массивы с инициализаторами
Совет 14. Неопределенный порядок вычислений
Порядок вычисления аргументов функции
Порядок вычисления подвыражений
Порядок вычисления размещающего new
Операторы, которые фиксируют порядок
вычислений
Некорректная перегрузка операторов
Совет 15. Помните о предшествовании
Приоритеты и ассоциативность
Проблемы, связанные с приоритетом операторов
Проблемы, связанные с ассоциативностью
Совет 16. Подводные камни в предложении for
Совет 17. Принцип "максимального куска"
Совет 18. О порядке следования спецификаторов в
объявлениях
Совет 19. Функция или объект?
Совет 20. Перестановка квалификаторов типа
Совет 21. Автоинициализация
Совет 22. Статические и внешние типы
Совет 23. Аномалия при поиске операторной
функции
Совет 24. Тонкости оператора ->
Глава 3. Препроцессор
Совет 25. Определение литералов с помощью
#define
Совет 26. Определение псевдофункций с помощью
#define
Совет 27. Не увлекайтесь использованием
директивы #if
Использование директивы #if для отладки
Использование #if для переносимости
А как насчет классов?
Практика - критерий истины
Совет 28. Побочные эффекты в утверждениях
Глава 4. Преобразования
Совет 29. Преобразование посредством void *
Совет 30. Срезка
Совет 31. Преобразование в указатель на
константу
Совет 32. Преобразование в указатель на
указатель на константу
Совет 33. Преобразование указателя на указатель
на базовый класс
Совет 34. Проблемы с указателем на многомерный
массив
Совет 35. Бесконтрольное понижающее
приведение
Совет 36. Неправильное использование
операторов преобразования
Совет 37. Непреднамеренное преобразование с
помощью
конструктора
Совет 38. Приведение типов в случае
множественного наследования
Совет 39. Приведение неполных типов
Совет 40. Приведения в старом стиле
Совет 41. Статические приведения
Совет 42. Инициализация формальных аргументов
временными объектами
Совет 43. Время жизни временных объектов
Совет 44. Ссылки и временные объекты
Совет 45. Неоднозначность при использовании
dynamic_cast
Совет 46. Контравариантность
Глава 5. Инициализация
Совет 47. Не путайте инициализацию и
присваивание
Совет 48. Правильно выбирайте область
видимости переменной
Совет 49. Внимательно относитесь к операциям
копирования
Совет 50. Побитовое копирование объектов
классов
Совет 51. Не путайте инициализацию и
присваивание
в конструкторах
Совет 52. Несогласованный порядок членов в
списке инициализации
Совет 53. Инициализация виртуальных базовых
классов
Совет 54. Инициализация базового класса
в конструкторе копирования
Совет 55. Порядок инициализации статических
данных
вовремя выполнения
Совет 56. Прямая инициализация и инициализация
копированием
Совет 57. Прямая инициализация аргументов
Совет 58. Что такое оптимизация возвращаемого
значения?
Совет 59. Инициализация статических членов в
конструкторе
Глава 6. Управление памятью и ресурсами
Совет 60. Различайте выделение и освобождение
памяти
для скаляров и для массивов
Совет 61. Контроль ошибок при выделении памяти
Совет 62. Подмена глобальных new и delete
Совет 63. Об области видимости и активации
функций-членов new
и delete
Совет 64. Строковые литералы в выражении throw
Совет 65. Обрабатывайте исключения правильно
Совет 66. Внимательно относитесь к адресам
локальных объектов
Исчезающие фреймы стека
Затирание статических переменных
Идиоматические трудности
Проблемы локальной области видимости
Исправление ошибки путем добавления static
Совет 67. Помните, что захват ресурса есть
инициализация
Совет 68. Правильно используйте auto_ptr
Глава 7. Полиморфизм
Совет 69. Кодирование типов
Совет 70. Невиртуальный деструктор базового
класса
Неопределенное поведение
Виртуальные статические функции-члены
Всех обманем
Исключения из правил
Совет 71. Сокрытие невиртуальных функций
Совет 72. Не делайте шаблонные методы слишком
гибкими
Совет 73. Перегрузка виртуальных функций
Совет 74. Виртуальные функции с аргументами по
умолчанию
Совет 75. Вызовы виртуальных функций из
конструкторов
и деструкторов
Совет 76. Виртуальное присваивание
Совет 77. Различайте перегрузку,
переопределение и сокрытие
Совет 78. О реализации виртуальных функций
и механизма переопределения
Совет 79. Вопросы доминирования
Глава 8. Проектирование классов
Совет 80. Интерфейсы get/set
Совет 81. Константные и ссылочные данные-члены
Совет 82. В чем смысл константных
функций-членов?
Синтаксис
Простая семантика и механизм работы
Семантика константной функции-члена
Совет 83. Различайте агрегирование и
использование
Совет 84. Не злоупотребляйте перегрузкой
операторов
Совет 85. Приоритеты и перегрузка
Совет 86. Операторы, являющиеся членами
и друзьями класса
Совет 87. Проблемы инкремента и декремента
Совет 88. Неправильная интерпретация
шаблонных операций
копирования
Глава 9. Проектирование иерархий
Совет 89. Массивы объектов класса
Совет 90. Не всегда один контейнер можно
подставить
вместо другого
Совет 91. Что такое защищенный доступ?
Совет 92. Применение открытого наследования
для повторного использования кода
Совет 93. Конкретные открытые базовые классы
Совет 94. Не пренебрегайте вырожденными
иерархиями
Совет 95. Не злоупотребляйте наследованием
Совет 96. Управление на основе типов
Совет 97. Космические иерархии
Совет 98. Задание "интимных" вопросов объекту
Совет 99. Опрос возможностей
Список литературы
Предметный указатель
Об авторе
Отзывы
Из минусов:
- Тёмная бумага ( при этом плохие куски кода имеют затемнённый фон )
- Слишком мягкая обложка
- Приемлемое количество опечаток и неточностей
К сожалению, много опечаток, и качество перевода ниже чем у русских изданий книг Скота Мейерса.
Последние поступления в рубрике "С, С++, C#"
Справочник программиста по C/C++ Шилдт Г.
Герберт Шилдт, легендарный автор книг по программированию, столь умело выделил основные элементы языков С и C++ и организовал их в таком удобном формате, что вы быстро и легко найдете ответы на все свои вопросы по программированию на С и C++. В...... | |
C++ для инженерных и научных расчетов. Руководство Готтшлинг П.
С развитием вычислительной техники научные и инженерные проекты становятся все более крупными и сложными, и все более вероятно, что все новые проекты будут разрабатываться на C++. По мере того, как встраиваемое аппаратное обеспечение становится все...... | |
C# 8.0. Скорая помощь для программистов на C# 8.0. Карманный справочник Албахари Д.
Когда вам нужны ответы на вопросы по программированию на языке С# 8.0, этот узкоспециализированный справочник предложит именно то, что необходимо знать — без всяких длинных введений или раздутых примеров. Легкое в чтении и идеальное в качестве...... |
Если Вы задавались вопросами "где найти книгу в интернете?", "где купить книгу?" и "в каком книжном интернет-магазине нужная книга стоит дешевле?", то наш сайт именно для Вас. На сайте книжной поисковой системы Книгопоиск Вы можете узнать наличие книги Дьюхэрст С.К., Скользкие места С++. Как избежать проблемы при проектировании и компиляции ваших программ в интернет-магазинах. Также Вы можете перейти на страницу понравившегося интернет-магазина и купить книгу на сайте магазина. Учтите, что стоимость товара и его наличие в нашей поисковой системе и на сайте интернет-магазина книг может отличаться, в виду задержки обновления информации.