Главная
Контакты
Нашёл ошибку
Прислать материал
Добавить в избранное
Эффективное использование C++. 55 верных способов улучшить структуру и код ваших программ
Скотт Майерс
41df634b-2a82-102a-9ae1-2dfe723fe7c7
;
Отзывы о третьей редакции block...
Благодарности
Предисловие
Введение
Терминология
Соглашения об именах
Многопоточность
Библиотеки 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++»
Приложение В Соответствие правил во втором и третьем изданиях
Альтернативная медицина
Астрономия и Космос
Биология
Биофизика
Ботаника
Ветеринария
Военная история
Геология и география
Государство и право
Деловая литература
Домашние животные
Домоводство
Здоровье
Зоология
История
Компьютеры и Интернет
Кулинария
Культурология
Литературоведение
Математика
Медицина
Металлургия
Научная литература - прочее
Обществознание
Педагогика
Политика
Психология
Радиоэлектроника
Религиоведение
Сад и огород
Самосовершенствование
Сделай сам
Спорт
Строительство и сопромат
Технические науки
Транспорт и авиация
Учебники
Физика
Физическая химия
Философия
Химия
Хиромантия
Хобби и ремесла
Шпаргалки
Эзотерика
Экология
Юриспруденция
Языкознание
Главная
|
Контакты
|
Нашёл ошибку
|
Прислать материал
|
Добавить в избранное
Все материалы представлены для ознакомления и принадлежат их авторам.