Предисловие | 24 |
|
Введение | 25 |
|
Новые концепции программирования | 25 |
Объектно-ориентированное программирование | 25 |
Унифицированный язык моделирования | 26 |
Языки и платформы разработки | 26 |
Для чего нужна эта книга | 27 |
Новые концепции | 27 |
Последовательность изложения материала | 27 |
Знания, необходимые для чтения этой книги | 28 |
Техническое и программное обеспечение | 28 |
Консольные программы | 28 |
Исходные тексты программ | 28 |
Упражнения | 29 |
Проще, чем кажется | 29 |
Преподавателям | 29 |
Стандартный C++ | 29 |
Унифицированный язык моделирования (UML) | 29 |
Средства разработки программного обеспечения | 30 |
Различия между С и C++ | 30 |
Оптимальный порядок изучения ООП | 30 |
Нововведения в C++ | 31 |
Избыточные возможности | 31 |
Упражнения | 31 |
От издательства | 31 |
|
Глава 1. Общие сведения | 32 |
|
Для чего нужно объектно-ориентированное программирование? | 32 |
Процедурные языки | 32 |
Деление на функции | 33 |
Недостатки структурного программирования | 33 |
Неконтролируемый доступ к данным | 34 |
Моделирование реального мира | 35 |
Объектно-ориентированный подход | 36 |
Аналогия | 37 |
ООП: подход к организации программы | 38 |
Характеристики объектно-ориентированных языков | 38 |
Объекты | 38 |
Классы | 39 |
Наследование | 40 |
Повторное использование кода | 42 |
Пользовательские типы данных | 42 |
Полиморфизм и перегрузка | 42 |
C++ и С | 43 |
Изучение основ | 44 |
Универсальный язык моделирования (UML) | 44 |
Резюме | 45 |
Вопросы | 46 |
|
Глава 2. Основы программирования на C++ | 48 |
|
Что необходимо для работы | 49 |
Структура программы | 49 |
Функции | 49 |
Операторы | 51 |
Разделяющие знаки | 51 |
Вывод с использованием cout | 52 |
Строковые константы | 53 |
Директивы | 53 |
Директивы препроцессора | 54 |
Заголовочные файлы | 54 |
Директива using | 55 |
Комментарии | 55 |
Синтаксис комментариев | 55 |
Использование комментариев | 56 |
Альтернативный вид комментариев | 56 |
Переменные целого типа | 56 |
Описание переменных целого типа | 57 |
Объявление и определение переменной | 58 |
Имена переменных | 59 |
Операция присваивания | 59 |
Целые константы | 59 |
Оператор вывода | 60 |
Манипулятор endl | 60 |
Другие целые типы | 61 |
Символьные переменные | 61 |
Символьные константы | 62 |
Инициализация | 63 |
Управляющие последовательности | 63 |
Ввод с помощью cin | 64 |
Определение переменных при первом использовании | 65 |
Каскадирование операции << | 66 |
Выражения | 66 |
Приоритеты выполнения операций | 66 |
Вещественные типы | 67 |
Тип float | 67 |
Типы double и long double | 68 |
Вещественные константы | 68 |
Префикс const | 69 |
Директива #define | 70 |
Тип bool | 70 |
Манипулятор setw | 71 |
Каскадирование операции << | 72 |
Множественное определение | 72 |
Файл заголовка IOMANIP | 73 |
Таблица типов переменных | 73 |
Беззнаковые типы данных | 73 |
Преобразования типов | 75 |
Неявные преобразования типов | 75 |
Явные преобразования типов | 77 |
Арифметические операции | 78 |
Остаток от деления | 79 |
Арифметические операции с присваиванием | 79 |
Инкремент | 81 |
Декремент | 82 |
Библиотечные функции | 82 |
Заголовочные файлы | 83 |
Библиотечные файлы | 84 |
Заголовочные и библиотечные файлы | 84 |
Формы директивы #include | 84 |
Резюме | 85 |
Вопросы | 87 |
Упражнения | 88 |
|
Глава 3. Циклы и ветвления | 92 |
|
Операции отношения | 92 |
Циклы | 94 |
Цикл for | 94 |
Инициализирующее выражение | 96 |
Условие выполнения цикла | 96 |
Инкрементирующее выражение | 96 |
Число выполнений цикла | 97 |
Несколько операторов в теле цикла | 97 |
Блоки и область видимости переменных | 98 |
Форматирование и стиль оформления циклов | 99 |
Обнаружение ошибок | 100 |
Варианты цикла for | 100 |
Определение счётчика цикла внутри оператора цикла for | 101 |
Несколько инициализирующих выражений и условий цикла | 101 |
Цикл while | 102 |
Несколько операторов в цикле while | 104 |
Приоритеты арифметических операций и операций отношения | 105 |
Цикл do | 106 |
Выбор типа цикла | 108 |
Ветвления | 108 |
Условный оператор if | 109 |
Несколько операторов в теле if | 110 |
if внутри циклов | 110 |
Функция exit() | 111 |
Оператор if…else | 112 |
Функция getche() | 113 |
Условия с присваиванием | 114 |
Вложенные ветвления if…else | 116 |
if и else во вложенных ветвлениях | 117 |
Конструкция else…if | 119 |
Оператор switch | 119 |
Оператор break | 121 |
switch и символьные переменные | 122 |
Ключевое слово default | 123 |
Сравнение switch и if…else | 124 |
Условная операция | 124 |
Логические операции | 127 |
Операция логического И | 127 |
Логическое ИЛИ | 128 |
Логическое НЕ | 129 |
Целые величины в качестве булевых | 129 |
Приоритеты операций C++ | 130 |
Другие операторы перехода | 131 |
Оператор break | 131 |
Расширенная таблица символов ASCII | 133 |
Оператор continue | 133 |
Оператор goto | 134 |
Резюме | 135 |
Вопросы | 136 |
Упражнения | 138 |
|
Глава 4. Структуры | 142 |
|
Структуры | 142 |
Простая структура | 143 |
Определение структуры | 143 |
Определение структурной переменной | 144 |
Доступ к полям структуры | 146 |
Другие возможности структур | 146 |
Пример применения структур | 148 |
Вложенные структуры | 150 |
Пример карточной игры | 154 |
Структуры и классы | 156 |
Перечисления | 156 |
Дни недели | 157 |
Перечисления и программа подсчёта числа слов | 159 |
Пример карточной игры | 161 |
Недостаток перечислений | 162 |
Примеры перечисляемых типов | 163 |
Резюме | 163 |
Вопросы | 164 |
Упражнения | 165 |
|
Глава 5. Функции | 168 |
|
Простые функции | 169 |
Объявление функции | 170 |
Вызов функции | 171 |
Определение функции | 171 |
Обычные и библиотечные функции | 172 |
Отсутствие объявления | 173 |
Передача аргументов в функцию | 174 |
Передача констант в функцию | 174 |
Передача значений переменных в функцию | 175 |
Передача аргументов по значению | 176 |
Структурные переменные в качестве аргументов | 177 |
Имена переменных внутри прототипа функции | 181 |
Значение, возвращаемое функцией | 181 |
Оператор return | 182 |
Исключение ненужных переменных | 184 |
Структурная переменная в качестве возвращаемого значения | 185 |
Ссылки на аргументы | 186 |
Передача по ссылке аргументов стандартных типов | 187 |
Усложнённый вариант передачи по ссылке | 189 |
Передача структурных переменных по ссылке | 191 |
Замечание о ссылках | 192 |
Перегруженные функции | 192 |
Переменное число аргументов функции | 193 |
Различные типы аргументов | 195 |
Рекурсия | 196 |
Встраиваемые функции | 198 |
Аргументы по умолчанию | 200 |
Область видимости и класс памяти | 202 |
Локальные переменные | 203 |
Глобальные переменные | 205 |
Статические локальные переменные | 207 |
Возвращение значения по ссылке | 208 |
Вызов функции в качестве левого операнда операции присваивания | 209 |
Зачем нужно возвращение по ссылке? | 210 |
Константные аргументы функции | 210 |
Резюме | 212 |
Вопросы | 213 |
Упражнения | 215 |
|
Глава 6. Объекты и классы | 217 |
|
Простой класс | 217 |
Классы и объекты | 218 |
Определение класса | 219 |
Использование класса | 222 |
Вызов методов класса | 222 |
Объекты программы и объекты реального мира | 224 |
Детали изделия в качестве объектов | 224 |
Круги в качестве объектов | 225 |
Класс как тип данных | 226 |
Конструкторы | 227 |
Пример со счётчиком | 228 |
Графический пример | 231 |
Объекты в качестве аргументов функций | 232 |
Объекты в качестве аргументов | 236 |
Конструктор копирования по умолчанию | 237 |
Объекты, возвращаемые функцией | 239 |
Аргументы и объекты | 240 |
Пример карточной игры | 242 |
Структуры и классы | 244 |
Классы, объекты и память | 245 |
Статические данные класса | 247 |
Применение статических полей класса | 247 |
Пример использования статических полей класса | 247 |
Раздельное объявление и определение полей класса | 248 |
const и классы | 249 |
Константные методы | 250 |
Константные объекты | 252 |
Зачем нужны классы? | 253 |
Резюме | 254 |
Вопросы | 255 |
Упражнения | 257 |
|
Глава 7. Массивы и строки | 261 |
|
Основы массивов | 262 |
Определение массивов | 263 |
Элементы массива | 263 |
Доступ к элементам массива | 263 |
Среднее арифметическое элементов массива | 264 |
Инициализация массива | 265 |
Многомерные массивы | 267 |
Передача массивов в функции | 271 |
Массивы структур | 273 |
Массивы как члены классов | 275 |
Массивы объектов | 278 |
Массивы интервалов | 278 |
Границы массива | 280 |
Доступ к объектам в массиве | 280 |
Массивы карт | 281 |
Строки | 284 |
Строковые переменные | 285 |
Считывание нескольких строк | 288 |
Копирование строк | 289 |
Копирование строк более простым способом | 290 |
Массивы строк | 291 |
Строки как члены классов | 292 |
Определённые пользователем типы строк | 294 |
Стандартный класс string языка C++ | 296 |
Определение объектов класса string и присваивание им значений | 296 |
Ввод/вывод для объектов класса string | 298 |
Поиск объектов класса string | 299 |
Модификация объектов класса string | 300 |
Сравнение объектов класса string | 301 |
Доступ к символам в объектах класса string | 302 |
Другие методы класса string | 303 |
Резюме | 304 |
Вопросы | 304 |
Упражнения | 307 |
|
Глава 8. Перегрузка операций | 312 |
|
Перегрузка унарных операций | 313 |
Ключевое слово operator | 314 |
Аргументы операции | 315 |
Значения, возвращаемые операцией | 315 |
Временные безымянные объекты | 317 |
Постфиксные операции | 318 |
Перегрузка бинарных операций | 320 |
Арифметические операции | 320 |
Объединение строк | 323 |
Множественная перегрузка | 325 |
Операции сравнения | 325 |
Операции арифметического присваивания | 328 |
Операция индексации массива ([]) | 330 |
Преобразование типов | 334 |
Преобразования основных типов в основные типы | 335 |
Преобразования объектов в основные типы и наоборот | 336 |
Преобразования строк в объекты класса string и наоборот | 338 |
Преобразования объектов классов в объекты других классов | 340 |
Преобразования: когда что использовать | 346 |
Диаграммы классов UML | 346 |
Объединения | 347 |
Направленность | 347 |
«Подводные камни» перегрузки операций и преобразования типов | 348 |
Использование похожих значений | 348 |
Использование похожего синтаксиса | 348 |
Показывайте ограничение | 349 |
Избегайте неопределённости | 349 |
Не все операции могут быть перегружены | 349 |
Ключевые слова explicit и mutable | 349 |
Предотвращение преобразования типов с помощью explicit | 350 |
Изменение данных объекта, объявленных как const, |
используя ключевое слово mutable | 351 |
Резюме | 353 |
Вопросы | 353 |
Упражнения | 356 |
|
Глава 9. Наследование | 361 |
|
Базовый и производный классы | 362 |
Определение производного класса | 364 |
Обобщение в диаграммах классов в UML | 364 |
Доступ к базовому классу | 365 |
Результат программы COUNTEN | 366 |
Спецификатор доступа protected | 366 |
Недостатки использования спецификатора protected | 368 |
Неизменность базового класса | 368 |
Разнообразие терминов | 368 |
Конструкторы производного класса | 368 |
Перегрузка функций | 370 |
Какой из методов использовать? | 372 |
Операция разрешения и перегрузка функций | 372 |
Наследование в классе Distance | 373 |
Применение программы ENGLEN | 374 |
Конструкторы класса DistSign | 375 |
Методы класса DistSign | 375 |
В поддержку наследования | 375 |
Иерархия классов | 376 |
Абстрактный базовый класс | 379 |
Конструкторы и функции | 380 |
Наследование и графика | 380 |
Общее и частное наследование | 383 |
Комбинации доступа | 383 |
Выбор спецификатора доступа | 384 |
Уровни наследования | 385 |
Множественное наследование | 388 |
Методы классов и множественное наследование | 389 |
Частное наследование в программе EMPMULT | 393 |
Конструкторы при множественном наследовании | 393 |
Конструкторы без аргументов | 396 |
Конструктор со многими аргументами | 396 |
Неопределённость при множественном наследовании | 397 |
Включение: классы в классах | 398 |
Включение в программе EMPCONT | 399 |
Композиция: сложное включение | 403 |
Роль наследования при разработке программ | 403 |
Резюме | 404 |
Вопросы | 405 |
Упражнения | 407 |
|
Глава 10. Указатели | 411 |
|
Адреса и указатели | 412 |
Операция получения адреса & | 412 |
Переменные указатели | 414 |
Недостатки синтаксиса | 416 |
Указатели должны иметь значение | 416 |
Доступ к переменной по указателю | 417 |
Указатель на void | 420 |
Указатели и массивы | 421 |
Указатели-константы и указатели-переменные | 423 |
Указатели и функции | 424 |
Передача простой переменной | 424 |
Передача массивов | 426 |
Сортировка элементов массива | 428 |
Расстановка с использованием указателей | 428 |
Сортировка методом пузырька | 430 |
Указатели на строки | 432 |
Указатели на строковые константы | 432 |
Строки как аргументы функций | 433 |
Копирование строк с использованием указателей | 434 |
Библиотека строковых функций | 434 |
Модификатор const и указатели | 435 |
Массивы указателей на строки | 436 |
Управление памятью: операции new и delete | 437 |
Операция new | 438 |
Операция delete | 439 |
Класс String с использованием операции new | 440 |
Указатели на объекты | 442 |
Ссылки на члены класса | 443 |
Другое применение операции new | 444 |
Массив указателей на объекты | 445 |
Действия программы | 446 |
Доступ к методам класса | 446 |
Связный список | 447 |
Цепочка указателей | 447 |
Добавление новых элементов в список | 449 |
Получение содержимого списка | 450 |
Классы, содержащие сами себя | 450 |
Пополнение примера LINKLIST | 451 |
Указатели на указатели | 451 |
Сортируем указатели | 453 |
Тип данных person** | 454 |
Сравнение строк | 454 |
Пример разбора строки | 455 |
Разбор арифметических выражений | 456 |
Программа PARSE | 457 |
Симулятор: лошадиные скачки | 459 |
Разработка лошадиных скачек | 460 |
Моделирование хода времени | 463 |
Уничтожение массива указателей на объекты | 463 |
Функция putch() | 464 |
Диаграммы UML | 464 |
Диаграмма состояний в UML | 465 |
Состояния | 466 |
Переходы | 466 |
От состояния к состоянию | 466 |
Отладка указателей | 467 |
Резюме | 467 |
Вопросы | 469 |
Упражнения | 471 |
|
Глава 11. Виртуальные функции | 476 |
|
Виртуальные функции | 476 |
Доступ к обычным методам через указатели | 477 |
Доступ к виртуальным методам через указатели | 479 |
Позднее связывание | 481 |
Абстрактные классы и чистые виртуальные функции | 481 |
Виртуальные функции и класс person | 483 |
Виртуальные функции в графическом примере | 485 |
Виртуальные деструкторы | 488 |
Виртуальные базовые классы | 489 |
Дружественные функции | 491 |
Дружественные функции как мосты между классами | 491 |
Ломая стены | 492 |
Пример с английскими мерами длины | 493 |
Дружественность и функциональная запись | 496 |
Дружественные классы | 499 |
Статические функции | 500 |
Доступ к статическим функциям | 501 |
Инициализация копирования и присваивания | 502 |
Перегрузка оператора присваивания | 503 |
Конструктор копирования | 506 |
Объектные диаграммы UML | 510 |
Эффективное использование памяти классом String | 510 |
Указатель this | 516 |
Доступ к компонентным данным через указатель this | 517 |
Использование this для возврата значений | 518 |
Исправленная программа STRIMEM | 520 |
Динамическая информация о типах | 523 |
Проверка типа класса с помощью dynamic_cast | 523 |
Изменение типов указателей с помощью dynamic_cast | 524 |
Оператор typeid | 526 |
Резюме | 527 |
Вопросы | 528 |
Упражнения | 531 |
|
Глава 12. Потоки и файлы | 536 |
|
Потоковые классы | 536 |
Преимущества потоков | 537 |
Иерархия потоковых классов | 537 |
Класс ios | 539 |
Класс istream | 542 |
Класс ostream | 543 |
Классы iostream и _withassign | 544 |
Предопределённые потоковые объекты | 544 |
Ошибки потоков | 545 |
Биты статуса ошибки | 545 |
Ввод чисел | 546 |
Переизбыток символов | 547 |
Ввод при отсутствии данных | 547 |
Ввод строк и символов | 548 |
Отладка примера с английскими расстояниями | 548 |
Потоковый ввод/вывод дисковых файлов | 551 |
Форматированный файловый ввод/вывод | 551 |
Строки с пробелами | 554 |
Ввод/вывод символов | 555 |
Двоичный ввод/вывод | 557 |
Оператор reinterpret_cast | 558 |
Закрытие файлов | 558 |
Объектный ввод/вывод | 559 |
Совместимость структур данных | 560 |
Ввод/вывод множества объектов | 561 |
Биты режимов | 563 |
Указатели файлов | 564 |
Вычисление позиции | 564 |
Вычисление сдвига | 565 |
Функция tellg() | 567 |
Обработка ошибок файлового ввода/вывода | 567 |
Реагирование на ошибки | 567 |
Анализ ошибок | 568 |
Файловый ввод/выводе помощью методов | 570 |
Как объекты записывают и читают сами себя | 570 |
Как классы записывают и читают сами себя | 572 |
Код типа объекта | 578 |
Перегрузка операторов извлечения и вставки | 581 |
Перегрузка cout и cin | 581 |
Перегрузка << и >> для файлов | 583 |
Память как поток | 585 |
Аргументы командной строки | 586 |
Вывод на печатающее устройство | 589 |
Резюме | 590 |
Вопросы | 591 |
Упражнения | 592 |
|
Глава 13. Многофайловые программы | 596 |
|
Причины использования многофайловых программ | 596 |
Библиотеки классов | 597 |
Организация и концептуализация | 598 |
Создание многофайловой программы | 598 |
Заголовочные файлы | 599 |
Директории | 599 |
Проекты | 600 |
Межфайловое взаимодействие | 600 |
Взаимодействие исходных файлов | 600 |
Заголовочные файлы | 605 |
Пространства имён | 609 |
Класс сверхбольших чисел | 613 |
Числа как строки | 613 |
Описатель класса | 614 |
Методы | 615 |
Прикладная программа | 617 |
Моделирование высотного лифта | 619 |
Работа программы ELEV | 620 |
Проектирование системы | 621 |
Листинг программы ELEV | 623 |
Диаграмма состояний для программы ELEV | 634 |
Резюме | 635 |
Вопросы | 636 |
Проекты | 638 |
|
Глава 14. Шаблоны и исключения | 640 |
|
Шаблоны функций | 640 |
Шаблон простой функции | 642 |
Шаблоны функций с несколькими аргументами | 644 |
Шаблоны классов | 647 |
Контекстозависимое имя класса | 651 |
Создание класса связных списков с помощью шаблонов | 653 |
Хранение пользовательских типов | 655 |
UML и шаблоны | 658 |
Исключения | 659 |
Для чего нужны исключения | 660 |
Синтаксис исключений | 661 |
Простой пример исключения | 662 |
Многократные исключения | 666 |
Исключения и класс Distance | 668 |
Исключения с аргументами | 670 |
Класс bad_alloc | 673 |
Размышления об исключениях | 674 |
Резюме | 675 |
Вопросы | 676 |
Упражнения | 678 |
|
Глава 15. Стандартная библиотека шаблонов (STL) | 681 |
|
Введение в STL | 682 |
Контейнеры | 682 |
Алгоритмы | 687 |
Итераторы | 688 |
Возможные проблемы с STL | 689 |
Алгоритмы | 690 |
Алгоритм find() | 690 |
Алгоритм count() | 691 |
Алгоритм sort() | 692 |
Алгоритм searchQ | 692 |
Алгоритм merge() | 693 |
функциональные объекты | 694 |
Пользовательские функции вместо функциональных объектов | 695 |
Добавление _if к аргументам | 696 |
Алгоритм for_each() | 697 |
Алгоритм transform() | 697 |
Последовательные контейнеры | 698 |
Векторы | 699 |
Списки | 702 |
Итераторы | 706 |
Итераторы как интеллектуальные указатели | 706 |
Итераторы в качестве интерфейса | 708 |
Соответствие алгоритмов контейнерам | 710 |
Работа с итераторами | 713 |
Специализированные итераторы | 717 |
Адаптеры итераторов | 717 |
Потоковые итераторы | 720 |
Ассоциативные контейнеры | 724 |
Множества и мультимножества | 725 |
Отображения и мультиотображения | 729 |
Ассоциативный массив | 730 |
Хранение пользовательских объектов | 731 |
Множество объектов person | 732 |
Список объектов класса person | 735 |
Функциональные объекты | 738 |
Предопределённые функциональные объекты | 739 |
Создание собственных функциональных объектов | 741 |
Функциональные объекты и поведение контейнеров | 746 |
Резюме | 746 |
Вопросы | 747 |
Упражнения | 749 |
|
Глава 16. Разработка объектно-ориентированного ПО | 752 |
|
Эволюция процесса создания программного обеспечения | 752 |
Процесс просиживания штанов | 753 |
Каскадный процесс | 753 |
Объектно-ориентированное программирование | 753 |
Современные подходы | 754 |
Моделирование вариантов использования | 755 |
Действующие субъекты | 755 |
Варианты использования | 756 |
Сценарии | 756 |
Диаграммы вариантов использования | 757 |
Описания вариантов использования | 758 |
От вариантов использования к классам | 758 |
Предметная область программирования | 759 |
Рукописные формы | 760 |
Допущения | 762 |
Программа LANDLORD: стадия развития | 762 |
Действующие субъекты | 762 |
Варианты использования | 762 |
Описание вариантов использования | 763 |
Сценарии | 765 |
Диаграммы действий UML | 765 |
От вариантов использования к классам | 766 |
Список существительных | 766 |
Уточнение списка | 767 |
Определение атрибутов | 768 |
От глаголов к сообщениям | 768 |
Диаграмма классов | 770 |
Диаграммы последовательностей | 770 |
Написание кода | 774 |
Заголовочный файл | 775 |
Исходные .срр файлы | 780 |
Вынужденные упрощения | 789 |
Взаимодействие с программой | 789 |
Заключение | 791 |
Резюме | 791 |
Вопросы | 792 |
Проекты | 794 |
|
Приложение А. Таблица ASCII | 796 |
|
Приложение Б. Таблица приоритетов операций C++ | 803 |
|
Таблица приоритетов операций | 803 |
Зарезервированные слова | 803 |
|
Приложение В. Microsoft Visual C++ | 806 |
|
Элементы экрана | 806 |
Однофайловые программы | 807 |
Компоновка существующего файла | 807 |
Создание нового файла | 808 |
Ошибки | 808 |
Информация о типах в процессе исполнения (RTTI) | 808 |
Многофайловые программы | 809 |
Проекты и рабочие области | 809 |
Работа над проектом | 809 |
Сохранение, закрытие и открытие проектов | 810 |
Компиляция и компоновка | 811 |
Программы с консольной графикой | 811 |
Отладка программ | 811 |
Пошаговая трассировка | 812 |
Просмотр переменных | 812 |
Пошаговая трассировка функций | 812 |
Точки останова | 813 |
|
Приложение Г. Borland C++ Builder | 814 |
|
Запуск примеров в C++Builder | 815 |
Очистка экрана | 815 |
Создание нового проекта | 815 |
Задание имени и сохранение проекта | 817 |
Работа с существующими файлами | 817 |
Компиляция, связывание и запуск программ | 818 |
Запуск программы в C++Builder | 818 |
Запуск программы в MS DOS | 818 |
Предварительно скомпилированные заголовочные файлы | 818 |
Закрытие и открытие проектов | 818 |
Добавление заголовочного файла к проекту | 819 |
Создание нового заголовочного файла | 819 |
Редактирование заголовочного файла | 819 |
Определение местонахождения заголовочного файла | 819 |
Проекты с несколькими исходными файлами | 820 |
Создание дополнительных исходных файлов | 820 |
Добавление существующих исходных файлов | 820 |
Менеджер проектов | 821 |
Программы с консольной графикой | 821 |
Отладка | 822 |
Пошаговый прогон | 822 |
Просмотр переменных | 822 |
Пошаговая трассировка функций | 822 |
Точки останова | 823 |
|
Приложение Д. Упрощенный вариант консольной графики | 824 |
|
Использование подпрограмм библиотеки консольной графики | 825 |
Функции библиотеки консольной графики | 825 |
Реализация функций консольной графики | 827 |
Компиляторы Microsoft | 827 |
Компиляторы Borland | 828 |
Листинги исходных кодов | 828 |
|
Приложение Е. Алгоритмы и методы STL | 836 |
|
Алгоритмы | 836 |
Методы | 843 |
Итераторы | 845 |
|
Приложение Ж. Ответы и решения | 847 |
|
Глава 1 | 847 |
Глава 2 | 847 |
Глава 3 | 849 |
Глава 4 | 853 |
Глава 5 | 855 |
Глава 6 | 859 |
Глава 7 | 862 |
Глава 8 | 866 |
Глава 9 | 871 |
Глава 10 | 876 |
Глава 11 | 881 |
Глава 12 | 886 |
Глава 13 | 889 |
Глава 14 | 890 |
Глава 15 | 894 |
Глава 16 | 898 |
|
Приложение 3. Библиография | 899 |
|
Углублённое изучение C++ | 899 |
Основополагающие документы | 900 |
UML | 900 |
История C++ | 901 |
И другое | 901 |
|
Алфавитный указатель | 902 |