Название: Наиболее эффективное использование C++ - 35 новых рекомендаций по улучшению ваших программ и проектов.
Автор: Мейерс С.
2000.
Книга которая является продолжением популярного издания Effective C++, вы сможете узнать, как наиболее эффективно использовать конструкции языка C++, а также рассмотреть способы приведения типов, реализацию механизма RTTI, правила перегрузки операторов и др. В книге представлены рекомендации по применению интеллектуальных указателей, виртуальных конструкторов, буферизованного оператора new, proxy-классов и двойной диспетчеризации. Особое значение уделяется работе с исключениями и возможностям использования кода С в программах, написанных на C++. Детально обрисованы новейшие средства языка и представлено, как с их помощью увеличить производительность программ. Приложения хранят код шаблона auto_ptr и аннотированный список литературы и Internet-ресурсов, посвященных C++.
Содержание
Введение. 14
Глава 1. Основы. 23
Правило 1. Различайте указатели и ссылки. 23
Правило 2. Предпочитайте приведение типов в стиле C++. 25
Правило 3. Никогда не используйте полиморфизм в массивах. 30
Правило 4. Избегайте неоправданных конструкторов по умолчанию. 33
Глава 2. Операторы. 38
Правило 5. Опасайтесь определяемых пользователем функций преобразования типа. 38
Правило 6. Различайте префиксную и постфиксную формы операторов инкремента и декремента. 45
Правило 7. Никогда не перегружайте операторы &&, 11 и. 48
Правило 8. Различайте значение операторов new и delete. 51
Глава 3. Исключения. 57
Правило 9. Чтобы избежать утечки ресурсов, используйте деструкторы. 58
Правило 10. Не допускайте утечки ресурсов в конструкторах. 63
Правило 11. Не распространяйте обработку исключений за пределы деструктора. 71
Правило 12. Отличайте генерацию исключения от передачи параметра или вызова виртуальной функции. 73
Правило 13. Перехватывайте исключения, передаваемые по ссылке. 80
Правило 14. Разумно используйте спецификации исключений. 84
Правило 15. Оценивайте затраты на обработку исключений. 90
Глава 4. Эффективность. 94
Правило 16. Не забывайте о правиле «80-20». 95
Правило 17. Используйте отложенные вычисления. 97
Правило 18. Снижайте затраты на ожидаемые вычисления. 106
Правило 19. Изучите причины возникновения временных объектов. 110
Правило 20. Облегчайте оптимизацию возвращаемого значения. 113
Правило 21. Используйте перегрузку, чтобы избежать неявного преобразования типов. 116
Правило 22. По возможности применяйте оператор присваивания вместо отдельного оператора. 118
Правило 23. Используйте разные библиотеки. 121
Правило 24. Учитывайте затраты, связанные с виртуальными функциями, множественным наследованием, виртуальными базовыми классами и RTTI. 124
Глава 5. Приемы. 134
Правило 25. Делайте виртуальными конструкторы и функции, не являющиеся членами класса. 134
Правило 26. Ограничивайте число объектов в классе. 140
Правило 27. В зависимости от ситуации требуйте или запрещайте размещать объекты в куче. 154
Правило 28. Используйте интеллектуальные указатели. 167
Правило 29. Используйте подсчет ссылок. 190
Правило 30. Применяйте proxy-классы. 218
Правило 31. Создавайте функций, виртуальные по отношению более чем к одному объекту. 231
Глава 6. Разное. 254
Правило 32. Программируйте, заглядывая в будущее. 254
Правило 33. Делайте нетерминальные классы абстрактными. 259
Правило 34. Умейте использовать водной программе С и C++. 270
Правило 35. Ознакомьтесь со стандартом языка. 276
Приложение 1. Список рекомендуемой литературы. 284
Приложение 2. Реализация шаблона auto_ptr.
Операторы.
К перегружаемым операторам следует относиться с уважением. Они позволяют применять для типов, определяемых пользователем, такой же синтаксис, как и для встроенных типов, а также обеспечивают неслыханные перспективы благодаря функциям, стоящим за этими операторами. Но возможность заставить такие символы, как + или -, делать все что угодно, означает также, что из-за перегружаемых операторов программы могут оказаться совершенно непонятными. Тем не менее, есть много искусных программистов на C++, которые знают, как использовать мощь перегружаемых операторов, не превратив программу в черный ящик.
Менее искусным, к сожалению, легко совершить ошибку. Конструкторы с единственным аргументом и операторы неявного преобразования типа могут доставить особенно много хлопот, поскольку их вызовы не всегда имеют соответствия в исходных текстах программ. Это ведет к появлению программ, поведение которых понять очень трудно. Другая проблема возникает при перегрузке таких операторов, как && и II, потому что переход от встроенных операторов к функциям, написанным пользователем, приводит к незначительным изменениям в семантике, и эти изменения легко проглядеть. Наконец, множество операторов соотносится друг с другом по стандартным правилам, а из-за перегруженных операторов общепринятые соотношения иногда нарушаются.
В изложенных далее правилах я попытался объяснить, когда и как используются перегруженные операторы, как они ведут себя, как должны соотноситься друг с другом и как всем этим можно управлять. Освоив материалы данной главы, вы будете перегружать (или не перегружать) операторы с той же уверенностью, что и настоящий профессионал.
Купить книгу - Наиболее эффективное использование C++ - 35 новых рекомендаций по улучшению ваших программ и проектов - Мейерс С.
Купить книгу - Наиболее эффективное использование C++ - 35 новых рекомендаций по улучшению ваших программ и проектов - Мейерс С.
Теги: книга по программированию :: С++ :: учебник :: Мейерс
Смотрите также учебники, книги и учебные материалы:
- Приемы ООП, паттерны проектирования, Гамма, Хелм, Джонсон
- Приемы объектно - ориентированного проектирования - Паттерны проектирования - Гамма Э., Хелм Р., Джонсон Р.
- Программирование в среде Visual Basic for Applications - Демидова Л.А., Пылькин А.Н.
- Программирование графики для Windows - Фень Юань
- C++Builder 6, справочное пособие, книга 2, Классы и компоненты - Архангельский А.Я.
- C++Builder 6, справочное пособие, книга 1, Язык С++ - Архангельский А.Я.
- C++ Библиотека программиста - Джефф Элджер
- Программирование документов и приложений MS Office в Delphi - Корняков В.