Эффективное использование C++
Мейерс С.
В книге приводятся практические рекомендации по проектированию и программированию на языке C++. Изложены правила, позволяющие программисту сделать выбор между различными методами реализации программы - наследованием и шаблонами, шаблонами и указателями на базовые классы, открытым и закрытым наследованием, закрытым наследованием и вложенными классами, виртуальными и невиртуальными функциями и т.п. Для иллюстрации всех принципов используются новейшие языковые средства из стандарта ISO/ANSI C++ - внутриклассовая инициализация констант, пространства имен и шаблоны-члены класса. Рассматривается стандартная библиотека шаблонов и классы, подобные string и vector.
Издательства: Питер, ДМК Пресс, 2006 г.
ISBN 5-469-01213-1, 0-201-92488-9
Количество страниц: 240.
Содержание книги «Эффективное использование C++»:
- 9 Предисловие
- 16 Введение
- 26 Глава 1. Переход от C к C++
- 26 Правило 1. Предпочитайте const и inline использованию #define
- 29 Правило 2. Предпочитайте <iostream> использованию <stdio.h>
- 31 Правило 3. Предпочитайте new и delete использованию malloc и free
- 33 Правило 4. Предпочитайте комментарии в стиле C++
- 34 Глава 2. Управление памятью
- 34 Правило 5. Используйте одинаковые формы new и delete
- 36 Правило 6. Используйте delete в деструкторах для указателей членов
- 37 Правило 7. Будьте готовы к нехватке памяти
- 43 Правило 8. При написании операторов new и delete придерживайтесь ряда простых правил
- 46 Правило 9. Старайтесь не скрывать "нормальную" форму new
- 48 Правило 10. Если вы написали оператор new, напишите и оператор delete
- 55 Глава 3. Конструкторы, деструкторы и операторы присваивания
- 55 Правило 11. Для классов с динамическим выделением памяти объявляйте копирующий конструктор и оператор присваивания
- 58 Правило 12. Предпочитайте инициализацию присваиванию в конструкторах
- 62 Правило 13. Перечисляйте члены в списке инициализации в порядке их объявления
- 63 Правило 14. Убедитесь, что базовые классы имеют виртуальные деструкторы
- 68 Правило 15. operator= должен возвращать ссылку на *this
- 71 Правило 16. В operator= присваивайте значения всем элементам данных
- 74 Правило 17. В operator= осуществляйте проверку на присваивание самому себе
- 79 Глава 4. Классы и функции: проектирование и объявление
- 80 Правило 18. Стремитесь к таким интерфейсам классов, которые будут полными и минимальными
- 84 Правило 19. Проводите различие между функциями-членами, функциями, не являющимися членами класса, и дружественными функциями
- 89 Правило 20. Избегайте данных в открытом интерфейсе
- 90 Правило 21. Везде, где только можно, используйте const
- 96 Правило 22. Предпочитайте передачу параметров по ссылке передаче по значению
- 99 Правило 23. Не пытайтесь вернуть ссылку, когда вы должны вернуть объект
- 103 Правило 24. Тщательно обдумывайте выбор между перегрузкой функции и аргументами по умолчанию
- 107 Правило 25. Избегайте перегрузки по указателю и численному типу
- 110 Правило 26. Примите меры предосторожности против потенциальной неоднозначности
- 112 Правило 27. Явно запрещайте использование нежелательных функций-членов, создаваемых компилятором по умолчанию
- 113 Правило 28. Расчленяйте глобальное пространство имен
- 119 Глава 5. Классы и функции: реализация
- 119 Правило 29. Избегайте возврата "дескрипторов" внутренних данных
- 124 Правило 30. Не используйте функции-члены, возвращающие неконстантные указатели или ссылки на члены класса с более ограниченным доступом
- 126 Правило 31. Никогда не возвращайте ссылку на локальный объект или разыменованный указатель, инициализированный внутри функции посредством new
- 129 Правило 32. Откладывайте определение переменных до последнего момента
- 131 Правило 33. Тщательно обдумывайте использование встраиваемых функций
- 136 Правило 34. Уменьшайте зависимости файлов при компиляции
- 145 Глава 6. Наследование и объектно-ориентированное проектирование
- 146 Правило 35. Используйте открытое наследование для моделирования отношения "есть разновидность"
- 151 Правило 36. Различайте наследование интерфейса и наследование реализации
- 158 Правило 37. Никогда не переопределяйте наследуемые невиртуальные функции
- 160 Правило 38. Никогда не переопределяйте наследуемое значение аргумента по умолчанию
- 162 Правило 39. Избегайте приведения типов вниз по иерархии наследования
- 169 Правило 40. Моделируйте отношения "содержит" и "реализуется посредством" с помощью вложения
- 172 Правило 41. Различайте наследование и шаблоны
- 176 Правило 42. Продумывайте подход к использованию закрытого наследования
- 181 Правило 43. Продумывайте подход к использованию множественного наследования
- 193 Правило 44. Говорите то, что думаете, понимайте то, что говорите
- 195 Глава 7. Другие принципы
- 195 Правило 45. Необходимо знать, какие функции неявно создает и вызывает C++
- 198 Правило 46. Предпочитайте ошибки во время компиляции ошибкам во время выполнения
- 201 Правило 47. Обеспечьте инициализацию нелокальных статических объектов до их использования
- 205 Правило 48. Уделяйте внимание предупреждениям компилятора
- 206 Правило 49. Ознакомьтесь со стандартной библиотекой
- 213 Правило 50. Старайтесь понимать цели C++
- 218 Послесловие
- 220 Алфавитный указатель
Инструкция как скачать книгу Мейерс С.: Эффективное использование C++ в форматах DjVu, PDF, DOC или fb2 совершенно бесплатно.