Глава 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: Рассмотрите альтернативы виртуальным функциям
Правило 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++»