Оглавление
Предисловие 14
Стиль или суть? 14
Метод Сократа 15
Как читать данную книгу 16
Благодарности 17
Обобщенное программирование и стандартная библиотека C++ 19
Задача 1. Вектор: потребление и злоупотребление 20
Задача 2. Строчный двор. Часть 1: sprintf 26
Задача 3. Строчный двор. Часть 2: стандартные альтернативы 30
Задача 4. Функции-члены стандартной библиотеки 39
Задача 5. Красота обобщенности. Часть 1: Азы 42
Задача 6. Красота обобщенности. Часть 2: Достаточно ли универсальности? 45
Задача 7. Почему не специализируются шаблоны функций? 50
Задача 8. Дружественные шаблоны 56
Задача 9. Ограничения экспорта. Часть 1: основы 64
Задача 10. Ограничения экспорта. Часть 2: взаимосвязи, практичность
и советы по использованию 71
Вопросы и приемы безопасности исключений 79
Задача 11. Попробуй поймай 80
Задача 12. Безопасность исключений: стоит ли овчинка выделки? 84
Задача 13. Прагматичный взгляд на спецификации исключений 87
Разработка классов, наследование и полиморфизм 95
Задача 14. К порядку! 96
Задача 15. Потребление и злоупотребление правами доступа 99
Задача 16. Крепко закрыт? 103
Задача 17. Инкапсуляция 110
Задача 18. Виртуальность 118
Задача 19. Не можешь - научим, не хочешь - заставим! 126
Задача 20. Контейнеры в памяти. Часть 1: уровни управления памятью 138
Задача 21. Контейнеры в памяти. Часть 2: какие они на самом деле? 142
Задача 22. Новый взгляд на new. Часть 1: многоликий оператор new 149
Задача 23. Новый взгляд на new. Часть 2: прагматизм в управлении памятью 156
Оптимизация и эффективность 163
Задача 25. inline 168
Задача 26. Форматы данных и эффективность. Часть 1: игры в сжатие. 175
Задача 27. Форматы данных и эффективность. Часть 2: игры с битами 179
Ловушки, ошибки и головоломки 185
Задача 28. Ключевые слова, не являющиеся таковыми 186
Задача 29. Инициализация ли это? 192
Задача 30. Двойная точность - вежливость программистов 197
Задача 31. Сумеречное состояние... кода 200
Задача 32. Небольшие очепятки и прочие курьезы 204
Задача 33. Ооооператоры 207
Изучение конкретных примеров 211
Задача 34. Индексные таблицы 212
Задача 35. Обобщенные обратные вызовы 221
Задача 36. Объединения 228
Задача 37. Ослабленная монолитность. Часть 1: взгляд на std::string 242
Задача 38. Ослабленная монолитность. Часть 2: разбор std::string 247
Задача 39. Ослабленная монолитность. Часть 3: уменьшение std::string 254
Задача 40. Ослабленная монолитность. Часть 4: новый std::string 257
Список литературы 265
Предметный указатель 268