Что следует помнить
• Boost – это сообщество и Web-сайт для разработки бесплатных библиотек на C++ с открытыми исходными текстами, подвергающихся публичному обсуждению. Boost оказывает немалое влияние на процедуру стандартизации C++.
• Boost предоставляет реализацию многих компонентов TR1, но – кроме того – и множество других библиотек.
Приложение А
За пределами «Эффективного использования C++»
В книгу «Эффективное использование C++» вошло то, что я считаю наиболее важными рекомендациями для практикующих программистов на C++. Если вы интересуетесь дополнительными возможностями повысить эффективность своей работы, я рекомендую ознакомиться с другими моими книгами: «Наиболее эффективное использование C++» и «Эффективное использование STL».
В книгу «Наиболее эффективное использование C++» включены дополнительные рекомендации и подробно рассмотрены такие темы, как эффективность и программирование с учетом исключений. Кроме того, в ней описываются такие важные приемы программирования на C++, как «интеллектуальные» указатели, подсчет ссылок и прокси-объекты.
«Эффективное использование STL» – это тоже набор рекомендаций, организованный подобно «Эффективному использованию C++», но основное внимание в ней уделено применению стандартной библиотеки шаблонов.
Содержание обеих книг приведено ниже.
Наиболее эффективное использование C++
Основы
Параграф 1: Различайте указатели и ссылки
Параграф 2: Предпочитайте приведение типов в стиле C++
Параграф 3: Никогда не используйте полиморфизм в массивах
Параграф 4: Избегайте неоправданных конструкторов по умолчанию
Операторы
Параграф 5: Опасайтесь определяемых пользователем функций преобразования типов
Параграф 6: Различайте префиксную и постфиксную формы операторов инкремента и декремента
Параграф 7: Никогда не перегружайте «&&», «||» или «,»
Параграф 8: Различайте значение операторов new и delete
Исключения
Параграф 9: Чтобы избежать утечки ресурсов, используйте деструкторы
Параграф 10: Не допускайте утечки ресурсов в конструкторах
Параграф 11: Не распространяйте обработку исключений за пределы деструктора
Параграф 12: Отличайте генерацию исключения от передачи параметра или вызова виртуальной функции
Параграф 13: Перехватывайте исключения, передаваемые по ссылке
Параграф 14: Разумно используйте спецификации исключений
Параграф 15: Оценивайте затраты на обработку исключений
Эффективность
Параграф 16: Не забывайте о правиле «80–20»
Параграф 17: Используйте отложенные вычисления
Параграф 18: Снижайте затраты на ожидаемые вычисления
Параграф 19: Изучите причины возникновения временных объектов
Параграф 20: Облегчайте оптимизацию возвращаемого значения
Параграф 21: Используйте перегрузку, чтобы избежать неявного преобразования типов
Параграф 22: По возможности применяйте оператор присваивания вместо отдельного оператора
Параграф 23: Используйте разные библиотеки
Параграф 24: Учитывайте затраты, связанные с виртуальными функциями, множественным наследованием, виртуальными базовыми классами и RTTI
Приемы
Параграф 25: Делайте виртуальными конструкторы и функции, не являющиеся членами класса
Параграф 26: Ограничивайте числа объектов в классе
Параграф 27: В зависимости от ситуации требуйте или запрещайте размещать объекты в куче
Параграф 28: Используйте интеллектуальные указатели
Параграф 29: Используйте подсчет ссылок
Параграф 30: Применяйте прокси-классы
Параграф 31: Создавайте функции, виртуальные по отношению более чем к одному объекту
Разное
Параграф 32: Программируйте, заглядывая в будущее
Параграф 33: Делайте нетерминальные классы абстрактными
Параграф 34: Умейте использовать C++ и C в одной программе
Параграф 35: Ознакомьтесь со стандартом языка
Эффективное использование STL
Глава 1: Контейнеры
Параграф 1: Проявляйте здравый смысл при выборе контейнера
Читать дальше
Конец ознакомительного отрывка
Купить книгу