Оглавление

Оглавление

Часть I. Первое знакомство с C + + 21

Глава 1. Написание вашей первой программы 23

Глава 2. Премудрости объявления переменных 33

Глава 3. Выполнение математических операций 41

Глава 4. Выполнение логических операций 46

Глава 5. Операторы управления программой 55

Часть II. Становимся программистами 67

Глава 6. Создание функций 69

Глава 7. Хранение последовательностей в массивах 79

Глава 8. Первое знакомство с указателями в C++ 90

Глава 9. Второе знакомство с указателями 100

Глава 10. Прочие функциональные особенности 111

Глава 11. Отладка программ на C + + 119

Часть III. "Классическое" программирование 139

Глава 12. Знакомство с объектно-ориентированным программированием 141

Глава 13. Классы в C++ 144

Глава 14. Работа с классами 149

Глава 15. Создание указателей на объекты 160

Глава 16. Защищенные члены класса: не беспокоить! 173

Глава 17. Создание и удаление объектов: конструктор и деструктор 179

Глава 18. Аргументация конструирования 187

Глава 19. Копирующий конструктор 201

Глава 20. Статические члены 211

Часть IV. Наследование 225

Глава 21. Наследование классов 227

Глава 22. Знакомство с виртуальными функциями-членами: настоящие ли они 233

Глава 23. Разложение классов 245

Часть V. Полезные особенности 265

Глава 24. Перегрузка операторов 267

Глава 25. Перегрузка оператора присвоения 280

Глава 26. Использование потоков ввода-вывода 286

Глава 27. Обработка ошибок и исключения 299

Глава 28. Множественное наследование 306

Часть VI. Великолепная десятка 315

Глава 29. Десять способов избежать ошибок 317

Приложение А. Словарь терминов 322

Содержание

Об авторе 12

Благодарности 13

Введение 14

Об этой книге 14

О чем эта книга 14

Что такое C++ 14

Соглашения, используемые в книге 15

Что можно не читать 15

Нелепые предположения 15

Как организована эта книга 16

В конце каждой части... 16

Часть 1. Первое знакомство с C++ 17

Часть 2. Становимся программистами 17

Часть 3. "Классическое" программирование 17

Часть 4. Наследование 17

Часть 5. Полезные особенности 17

Часть 6. Великолепная десятка 17

Использованные в этой книге пиктограммы 18

Что дальше 18

Часть I. Первое знакомство с C + + 19

Глава 1. Написание вашей первой программы 21

Постигая концепции C++ 21

Что такое программа 22

Как пишут программы 22

Создание первой программы 23

Введение кода 23

Создание выполнимого файла 25

Выполнение программы 26

GNU — это не Windows 26

Помощь в GNU C++ 27

Разбор программ 27

Определение структуры программ C++ 27

Использование в исходном коде комментариев 27

Использование инструкций в программах 28

Объявления 28

Генерирование вывода 29

Вычисление выражений 29

Сохранение результатов выражения 30

Обзор программы Convert продолжается... 30

Глава 2. Премудрости объявления переменных 31

Объявление переменных 31

Объявление разных типов переменных 32

Ограничения, налагаемые на целые числа в C++ 32

Решение проблемы усечения дробной части 33

Ограничения, налагаемые на числа с плавающей точкой 34

Объявления типов переменных 35

Типы констант 36

Специальные символы 36

Выражения смешанного типа 37

Глава 3. Выполнение математических операций 39

Бинарная арифметика 39

Анализ выражений 40

Определение порядка операций 41

Выполнение унарных операций 42

Использование операторов присвоения 42

Глава 4. Выполнение логических операций 44

Зачем нужны логические операторы 44

Использование простых логических операторов 44

Логические операции и действительные переменные 45

Бинарные числа в C++ 47

Десятичная система счисления 47

Другие системы счисления 48

Двоичная система счисления 48

Выполнение битовых логических операций 49

Битовые операции с одним битом 49

Использование битовых операторов 50

Простой пример 51

Зачем придуманы эти глупые операторы 52

Глава 5. Операторы управления программой 53

Управление ходом программы с помощью команд ветвления 53

Выполнение циклов 55

Цикл while 55

Использование операторов инкремента и декремента 56

Использование цикла for 57

Избегайте бесконечных циклов 59

Специальные операторы циклов 60

Вложенные команды управления 62

Инструкция выбора 63

Часть II. Становимся программистами 65

Глава 6. Создание функций 67

Написание и использование функций 67

Подробный анализ функций 69

Простые функции 70

Функции с аргументами 70

Перегрузка функций 73

Определение прототипов функций 74

Хранение переменных в памяти 75

Глава 7. Хранение последовательностей в массивах 77

Преимущества массивов 77

Работа с массивами 78

Инициализация массива 80

Выход за границы массива 81

Использовать ли массивы 81

Определение и использование массивов 82

Использование символьных массивов 82

Управление строками 84

Написание функции, соединяющей две строки 84

Функции C++ для работы со строками 86

Обработка символов типа wchar_t 87

Устранение устаревших функций вывода 87

Глава 8. Первое знакомство с указателями в С + + 88

Что такое адрес 88

Использование указателей 89

Сравнение указателей и почтовых адресов 90

Использование разных типов указателей 91

Передача указателей функциям 93

Передача аргументов по значению 93

Передача значений указателей 93

Передача аргументов по ссылке 94

Использование кучи 94

Область видимости 94

Проблемы области видимости 96

Использование блока памяти 96

Глава 9. Второе знакомство с указателями 98

Операции с указателями 98

Повторное знакомство с массивами в свете указателей 99

Использование операций над указателями для адресации внутри массива 100

Использование указателей для работы со строками 101

Операции с указателями других типов 104

Отличия между указателями и массивами 104

Объявление и использование массивов указателей 105

Использование массивов строк 106

Доступ к аргументам main() 107

Глава 10. Прочие функциональные особенности 109

Зачем разбивать программу на модули 109

Пример большой программы 110

Разделение программы FunctionDemo 111

Отделение модуля sumSequence() 111

Создание модуля MainModule.cpp 113

Создание файла проекта 113

Создание файла проекта в GNU C + + 114

Создание файла проекта в Visual C + + 114

Использование директивы #include 115

Использование стандартных библиотек C + + 116

Глава 11. Отладка программ на С+ + 117

Определение типа ошибки 117

Использование отладочной печати 117

Выявление "жучка" № 1 118

Выявление "жучка" № 2 121

Использование отладчика 124

Что такое отладчик 124

Выбор отладчика 124

Запуск тестовой программы 125

Пошаговое выполнение программы 126

Пошаговый режим с входом в функции 128

Использование точек останова 129

Просмотр и редактирование переменных 129

Первая программа BUDGET 132

Часть III. "Классическое" программирование 137

Глава 12. Знакомство с объектно-ориентированным программированием 139

Микроволновые печи и уровни абстракции 139

Приготовление блюд с помощью функций 140

Приготовление "объектно-ориентированных" блюд 140

Классифицирование микроволновых печей 140

Зачем нужна классификация 141

Глава 13. Классы в С+ + 142

Введение в классы 142

Формат класса 142

Обращение к членам класса 143

Пример программы 144

Глава 14. Работа с классами 147

Активизация объектов 147

Моделирование реальных объектов 148

Зачем нужны функции-члены 148

Добавление функции-члена 149

Создание функции-члена 149

Именование членов класса 150

Вызов функций-членов 150

Обращение к функциям-членам 151

Доступ к членам из функции-члена 151

Разрешение области видимости 153

Определение функции-члена 154

Определение функций-членов вне класса 155

Перегрузка функций-членов 156

Глава 15. Создание указателей на объекты 158

Определение массивов указателей 158

Объявление массивов объектов 159

Объявление указателей на объекты 160

Разыменование указателей на объекты 160

Использование стрелок 161

Передача объектов функциям 161

Вызов функции с передачей объекта по значению 161

Вызов функции с передачей указателя 162

Зачем передавать указатель 162

Передача объекта по ссылке 164

Возврат к куче 165

Использование связанных списков 165

Массив 165

Связанный список 166

Другие операции над связанным списком 167

Свойства связанных списков 168

Программа LinkedListData 168

Глава 16. Защищенные члены класса: не беспокоить! 171

Защищенные члены 171

Зачем нужны защищенные члены 171

Как устроены защищенные члены 172

Чем хороши защищенные члены 173

Защита внутреннего устройства класса 173

Классы с ограниченным интерфейсом 174

Обращение к защищенным членам 174

"Друг всегда уступить готов место в шлюпке и круг..." 174

Глава 17. Создание и удаление объектов: конструктор и деструктор 177

Создание объектов 177

Использование конструкторов 178

Зачем нужны конструкторы 178

Работа с конструкторами 179

Что такое деструктор 182

Зачем нужен деструктор 182

Работа с деструкторами 183

Глава 18. Аргументация конструирования 185

Как снабдить конструктор аргументами 185

Зачем конструкторам нужны аргументы 186

Как использовать конструктор с аргументами 186

Перегрузка конструктора 188

Определение конструкторов по умолчанию 190

Конструирование членов класса 191

Управление последовательностью конструирования 195

Локальные объекты создаются последовательно 196

Статические объекты создаются один раз 196

Все глобальные объекты создаются до вызова main() 196

Порядок создания глобальных объектов не определен 197

Члены создаются в порядке их объявления 198

Деструкторы удаляют объекты в порядке, обратном порядку их создания 198

Глава 19. Копирующий конструктор 199

Копирование объекта 199

Зачем это нужно 199

Использование конструктора копирования 200

Автоматический конструктор копирования 201

"Мелкие" и "глубокие" копии 203

Временные объекты 206

Глава 20. Статические члены 209

Определение статических членов 209

Зачем нужны статические данные 209

Использование статических членов 210

Обращение к статическим данным-членам 210

Применение статических данных-членов 212

Объявление статических функций-членов 212

Бюджет с классами — BUDGET2.CPP 215

Часть IV. Наследование 223

Глава 21. Наследование классов 225

Зачем нужно наследование 225

Как наследуется класс 227

Конструирование подкласса 229

Отношение СОДЕРЖИТ 229

Глава 22. Знакомство с виртуальными функциями-членами: настоящие ли они 231

Зачем нужен полиморфизм 234

Как работает полиморфизм 235

Полиморфное приготовление закуски 237

Когда функция не является виртуальной 239

Виртуальные особенности 241

Глава 23. Разложение классов 243

Разложение 243

Реализация абстрактных классов 246

Концепция абстрактных классов 248

Создание полноценного класса из абстрактного 249

Передача абстрактных классов 251

Нужны ли чисто виртуальные функции 251

Рационализация бюджета: BUDGET3.CPP 253

Часть V. Полезные особенности 263

Глава 24. Перегрузка операторов 265

Перегрузка операторов: давайте жить в гармонии 265

Операторная функция 266

А подробнее? 269

operator+() 269

operator*-+() 271

Операторы как функции-члены 272

Еще одна перегрузка 273

Перегрузка операторов с помощью неявного преобразования типов 274

Приведение объектов пользовательских типов 275

Оператор явного преобразования 276

Правила для неявных преобразований 277

Глава 25. Перегрузка оператора присвоения 279

Опасная работа, коварная работа, кошмарная работа... 279

Знакомство с перегрузкой оператора присвоения 280

Глубокая проблема создания мелких копий 281

Почленный подход к С 282

Возврат результата присвоения 283

Защита членов 283

Глава 26. Использование потоков ввода-вывода 285

Нырнем в поток... 285

Знакомство с подклассами fstream 287

Подклассы strstream 290

Манипулирование манипуляторами 291

Написание собственных операторов вставки 294

Создание "умных" операторов 296

Глава 27. Обработка ошибок и исключения 299

Зачем нужен новый механизм обработки ошибок 300

Механизм исключительных ситуаций 301

Так что же мы будем бросать? 303

Глава 28. Множественное наследование 306

Механизм множественного наследования 306

Устранение неоднозначностей множественного наследования 307

Виртуальное наследование 308

Конструирование объектов 312

Отрицательные стороны множественного наследования 313

Часть VI. Великолепная десятка 315

Глава 29. Десять способов избежать ошибок 317

Включение всех предупреждений и сообщений об ошибках 317

Добейтесь чистой компиляции 318

Используйте последовательный стиль программирования 318

Ограничивайте видимость 318

Комментируйте свою программу 320

Хотя бы один раз выполните программу пошагово 320

Избегайте перегрузки операторов 320

Работа с кучей 320

Используйте исключительные ситуации для обработки ошибок 321

Избегайте множественного наследования 321

Приложение А. Словарь терминов 322

Предметный указатель 327

Стефан Р. Дэвис "С++ для чайников" 2003 г.