Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Итог_Пособие C++.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
2.03 Mб
Скачать

2. Работа с памятью 73

2.1 Управление выделением и освобождением памяти 73

2.1.1 Статическое и динамическое выделение памяти 73

2.1.2 Способы динамического выделения и освобождения памяти 75

2.2 Динамические структуры данных 78

2.2.1 Основные понятия 78

2.2.2 Примеры реализации динамических структур на основе указателей 80

3. Основы объектно-ориентированного программирования 87

3.1 Основные понятия ООП 87

3.2 Классы в С++ 89

3.2.1 Описание класса 89

3.2.2 Область видимости элементов класса. Инкапсуляция 90

3.2.3 Первые примеры 92

3.3. Конструкторы и деструкторы. 94

3.4 Указатель this 96

3.5 Перегрузка операций 97

3.6 Дружественные функции и классы 100

3.7 Статические элементы класса 101

3.8 Наследование и полиморфизм 103

3.8.1. Основные понятия 103

3.8.2 Одиночное наследование 103

3.8.3 Множественное наследование 106

3.8.4 Конструкторы и деструкторы классов-потомков 108

3.9. Полиморфизм при наследовании классов 109

3.9.1 Механизмы раннего и позднего связывания 109

3.9.2 Абстрактные классы 111

4.Обработка исключений 114

4.1 Основные понятия 114

4.2 Перехват исключений 118

4.3 Поиск обработчика исключений. Раскрутка стека. 120

4.4 Повторное возбуждение исключений 121

4.5 "Аппаратные" и "программные" исключения 123

4.6 Стандартные классы исключений 125

4.7 Спецификация исключений, возбуждаемых функцией 126

4.8 Исключения в конструкторах при наследовании 128

4.9. Исключения в деструкторах 129

5. Шаблонные функции и классы. Библиотека стандартных шаблонов 130

5.1 Шаблонные функции 130

5.2 Шаблонные классы 131

5.3 Специализация шаблонов 132

5.4 Шаблонные параметры шаблонов 135

5.5 Разработка шаблонных классов с настраиваемой функциональностью 137

5.6 Использование шаблонов для вычислений на этапе компиляции 139

5.7 Библиотека стандартных шаблонов (STL) – основные понятия 140

5.8 Последовательные контейнеры. Итераторы 140

5.9. Адаптеры контейнеров 145

5.10 Ассоциативные контейнеры 150

5.11 Алгоритмы 155

6. Паттерны проектирования 159

6.1 Порождающие шаблоны 160

6.2 Структурные шаблоны 161

6.3 Шаблоны поведения 162

6.4 Шаблон "фабричный метод" (Factory method) 165

6.5 Шаблон "одиночка" (Singleton) 178

6.6 Шаблон "итератор" (Iterator) 179

6.7 Шаблон "наблюдатель" (Observer) 183

6.8 Шаблон "пул объектов" (Object pool) 189

6.9 Шаблон "команда" (Command) 192

6. 10 Шаблон "посетитель" (Visitor) 200

6.11 Дополнительные задания 206

6.11.1 Шаблон Iterator 206

6.11.2 Шаблон Observer 207

6.11.3 Шаблоны Command и Observer 207

6.11.5 Шаблон Visitor 208

6.11.5 Разработка класса − контейнера 208

6.11.6 Оценка производительности кода 209

7. Антипаттерны 211

7.1 Программирование методом копирования и вставки (Copy-Paste Programming) 211

7.2 Спагетти-код (Spaghetti code) 212

7.3 Магические числа (Magic numbers) 213

7.4 Бездумное комментирование 214

7.5 Жесткое кодирование (Hard code) 215

7.6 Мягкое кодирование (Soft code) 216

7.7 Золотой молоток (Golden hammer) 216

7.8 Слепая вера (Blind faith) 216

7.9 Ненужная сложность (Accidental complexity) 217

7.10 Божественный объект (God Object) 217

7.11 Лодочный якорь (Boat anchor) 218

7.12 Поток лавы (Lava flow) 219

7.13 Изобретение велосипеда (Reinventing the wheel) 219

7.14 Программирование перебором (Programming by permutation) 220

8. СТАНДАРТ C++11 221

8.1 Выведение типов 221

8.2 Списки инициализации 223

8.3 Улучшение процесса инициализации объектов 225

8.4 Цикл for по коллекции 230

8.5 Лямбда-функции 233

8.6 Константа нулевого указателя nullptr 236

8.7 "Умные" указатели 237

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]