Мэйерс С., Эффективное использование С++. 55 верных способов улучшить структуру и код ваших программ
серия: Профессиональная серия от Addison-Wesley
ДМК-Пресс, 2014 г., 978-5-97060-088-7
Описание книги
Ключевые слова
Поделиться ссылкой на книгу
Содержание книги
Предисловие
Введение
Терминология
Соглашения об именах
Многопоточность
Библиотеки TR1 и Boost
Глава 1. Приучайтесь к C++
Правило 1: Относитесь к C++ как к конгломерату
языков
Правило 2: Предпочитайте const, enum и inline
использованию #define
Правило 3: Везде, где только можно, используйте
const
Константные функции-члены
Как избежать дублирования в константных и
неконстантных функциях-членах
Правило 4: Прежде чем использовать объекты,
убедитесь, что они инициализированы
Глава 2. Конструкторы, деструкторы и операторы
присваивания
Правило 5: Какие функции C++ создает и
вызывает молча
Правило 6: Явно запрещайте компилфятору
генерировать функции, которые вам не нужны
Правило 7: Объявляйте деструкторы
виртуальными в полиморфном базовом классе
Правило 8: Не позволяйте исключениям покидать
деструкторы
Правило 9: Никогда не вызывайте виртуальные
функции в конструкторе или деструкторе
Правило 10: Операторы присваивания должны
возвращать
ссылку на *this
Правило 11: В operator= осуществляйте проверку
на присваивание самому себе
Правило 12: Копируйте все части объекта
Глава 3. Управление ресурсами
Правило 13: Используйте объекты для управления
ресурсами
Правило 14: Тщательно продумывайте поведение
при копировании классов, управляющих ресурсами
Правило 15: Предоставляйте доступ к самим
ресурсам из управляющих ими классов
Правило 16: Используйте одинаковые формы new и
delete
Правило 17: Помещение в "интеллектуальный"
указатель объекта, выделенного с помощью new,
лучше располагать в отдельном предложении
Глава 4. Проектирование программ и объявления
Правило 18: Проектируйте интерфейсы так, что их
легко было использовать правильно и трудно -
неправильно
Правило 19: Рассматривайте проектирование
класса как проектирование типа
Правило 20: Предпочитайте передачу по ссылке на
const передаче по значению
Правило 21: Не пытайтесь вернуть ссылку, когда
должны вернуть объект
Правило 22: Объявляйте данные-члены закрытыми
Правило 23: Предпочитайте функциям-членам
функции, не являющиеся ни членами, ни друзьями
класса
Правило 24: Объявляйте функции, не являющиеся
членами, когда преобразование типов должно быть
применимо ко всем параметрам
Правило 25: Подумайте о поддержке функции
swap, не возбуждающей исключений
Глава 5. Реализация
Правило 26: Откладывайте определение
переменных насколько возможно
Правило 27: Не злоупотребляйте приведением
типов
Травило 28: Избегайте возвращения
"дескрипторов" внутренних данных
Правило 29: Стремитесь, чтобы программа была
безопасна относительно исключений
Правило 30: Тщательно обдумывайте
использование встроенных функций
Правило 31: Уменьшайте зависимости файлов при
компиляции
Глава 6. Наследование и
объектно-ориентированное проектирование
Правило 32: Используйте открытое наследование
для моделирования отношения "является"
Правило 33: Не скрывайте унаследованные имена
Правило 34: Различайте наследование интерфейса
и наследование реализации
Правило 35: Рассмотрите альтернативы
виртуальным функциям
Реализация паттерна "Шаблонный метод" с
помощью идиомы невиртуального интерфейса
Реализация паттерна "Стратегия" посредством
указателей на функции
Реализация паттерна "Стратегия" посредством
класса tr::function
"Классический" паттерн "Стратегия"
Резюме
Правило 36: Никогда не переопределяйте
наследуемые невиртуальные функции
Правило 37: Никогда не переопределяйте
наследуемое значение аргумента функции по
умолчанию
Правило 38: Моделируйте отношение "содержит"
или "реализуется посредством" с помощью
композиции
Правило 39: Продумывайте подход к
использованию закрытого наследования
Правило 40: Продумывайте подход к
использованию множественного наследования
Глава 7. Шаблоны и обобщенное программирование
Правило 41: Разберитесь в том, что такое неявные
интерфейсы и полиморфизм на этапе компиляции
Правило 42: Усвойте оба значения ключевого слова
typename
Правило 43: Необходимо знать, как обращаться к
именам в шаблонных базовых классах
Правило 44: Размещайте независимый от
параметров код вне шаблонов
Правило 45: Разрабатывайте шаблоны
функций-членов так, чтобы они принимали "все
совместимые типы"
Правило 46: Определяйте внутри шаблонов
функции, не являющиеся членами, когда
желательны преобразования типа
Правило 47: Используйте классы-характеристики
для предоставления информации о типах
Правило 48: Изучите метапрограммирование
шаблонов
Глава 8. Настройка new и delete
Правило 49: Разберитесь в поведении обработчика
new
Правило 50: Когда имеет смысл заменять new и
delete
Правило 51: Придерживайтесь принятых
соглашений при написании new и delete
Правило 52: Если вы написали оператор new с
размещением, напишите и соответствующий
оператор delete
Глава 9. Разное
Правило 53: Обращайте внимание на
предупреждения компилятора
Правило 54: Ознакомьтесь со стандартной
библиотекой, включая TR1
Правило 55: Познакомьтесь с Boost
Приложение А. За пределами "Эффективного
использования C++"
Приложение В. Соответствие правил во втором и
третьем изданиях
Об авторе
Отзывы
В оригинале - \"... C++ doesn`t provide a way to make a reference refer to a different object\" (\"... в C++ нет способа заставить ссылку сослаться на другой объект\"), переведено как \"... C++ не позволяет изменить объект, на который указывает ссылка\". Перевод НЕ ВЕРЕН ни формально, ни фактически - ссылка на неконстантный объект ЕЩЁ КАК ПОЗВОЛЯЕТ изменять объект - она для этого и нужна !
Содержание книги хорошее.
Читается легко.
Для меня, как продолжающего изучать с++, оказалась интересной.
После прочтения многое прояснилось.
Недостатки:
Присутсвуют опечатки.
Текст мелкий.
Уважаемое издательсво. Вы издали книгу для людей проводящих за экранами комьпьтера по 8 и более часов в день.
Почему нельзя сделать шрифт по крупнее.(например http://www.ozon.ru/context/detail/id/2381848/)
Ваша книга читабельна только дома за столом при хорошем освещении!
Рекомендую заставлять читать эту книгу всех начинающих C++ разработчиков в команде.
В коде заметил пару опечаток.
Сказать более конкретное сказать пока не могу, но надеюсь, что некоторые советы и выдержки из книги пойдут на пользу.
Спасибо
Последние поступления в рубрике "С, С++, C#"
Справочник программиста по C/C++ Шилдт Г.
Герберт Шилдт, легендарный автор книг по программированию, столь умело выделил основные элементы языков С и C++ и организовал их в таком удобном формате, что вы быстро и легко найдете ответы на все свои вопросы по программированию на С и C++. В...... | |
C++ для инженерных и научных расчетов. Руководство Готтшлинг П.
С развитием вычислительной техники научные и инженерные проекты становятся все более крупными и сложными, и все более вероятно, что все новые проекты будут разрабатываться на C++. По мере того, как встраиваемое аппаратное обеспечение становится все...... | |
C# 8.0. Скорая помощь для программистов на C# 8.0. Карманный справочник Албахари Д.
Когда вам нужны ответы на вопросы по программированию на языке С# 8.0, этот узкоспециализированный справочник предложит именно то, что необходимо знать — без всяких длинных введений или раздутых примеров. Легкое в чтении и идеальное в качестве...... |
Если Вы задавались вопросами "где найти книгу в интернете?", "где купить книгу?" и "в каком книжном интернет-магазине нужная книга стоит дешевле?", то наш сайт именно для Вас. На сайте книжной поисковой системы Книгопоиск Вы можете узнать наличие книги Мэйерс С., Эффективное использование С++. 55 верных способов улучшить структуру и код ваших программ в интернет-магазинах. Также Вы можете перейти на страницу понравившегося интернет-магазина и купить книгу на сайте магазина. Учтите, что стоимость товара и его наличие в нашей поисковой системе и на сайте интернет-магазина книг может отличаться, в виду задержки обновления информации.