Предисловие
Глава 1. Начальные сведения
Изучение языка C++
Немного истории
Язык С
Философия программирования, заложенная в языке С .
Объектно-ориентированное программирование
Обобщенное программирование
Язык C++
Переносимость и стандарты
Методика создания программ
Создание исходного кода
Компиляция и компоновка
Соглашения, используемые в этой книге
Наша система
Глава 2. Приступаем к изучению языка C++
Начальные сведения о языке C++
Функция main()
Комментарии в языке C++
Препроцессор C++ и файл iostream
Имена заголовочных файлов
Пространства имен
Вывод данных в языке C++ с использованием объекта cout
Форматирование исходного кода C++
Стиль форматирования исходного кода программ на C++
Дополнительные сведения об операторах языка C++
Операторы объявления и переменные
Оператор присваивания
Важный момент, связанный с объектом cout
Еще несколько операторов языка С ++
Применение объекта cin
И снова объект cout
Несколько слов о классах
Функции
Применение функций с возвращаемым значением
Разновидности функций
Функции, определяемые пользователем
Определяемая пользователем функция с возвращаемым значением.
Основные сведения об операторах
Резюме
опросы для повторения
ражнения по программированию
лава 3. Представление данных
ростые переменные
Имена переменных
Целочисленные типы данных
Типы данных short int и long
Типы данных без знака
Какой тип выбрать?
Целочисленные константы
Определение типа константы в языке C++
лп данных char: символы и малые целые числа
Универсальные имена символов
Новый тип данных bool
залификатор const
исла с плавающей точкой
Запись чисел с плавающей точкой
Типы данных с плавающей точкой
Константы с плавающей точкой
Преимущества и недостатки типов данных с плавающей точкой.
рифметические операции языка C++
Приоритет операций и ассоциативность
Разновидности операции деления
Операция деления по модулю
Преобразования типов данных
Преобразования данных в выражениях
езюме
опросы для повторения
пражнения по программированию
лава 4. Составные типы данных
раткий обзор массивов
Правила инициализации массивов
троки
Конкатенация строк
Использование строк в массиве
Смешанный ввод строк и чисел
раткий обзор структур
Другие свойства структур
Массивы структур;
Битовые поля
oбъединения
еречисления
Установка значений перечислителей
Диапазоны значений для перечислений
казатели и свободная память
Объявление и инициализация указателей
Указатели и числа
Выделение памяти с помощью оператора new
Высвобождение памяти с помощью оператора delete
Использование оператора new для создания динамических массивов.
Указатели, массивы и арифметика указателей
Указатели и строки
Использование оператора new для создания динамических структур.
Автоматическое, статическое и динамическое выделение памяти
Автоматические переменные
Резюме
Вопросы для повторения
Упражнения по программированию
Глава 5. Циклы и выражения сравнения
Обзор возможностей цикла for
Составные части цикла for
И опять о цикле for
Изменение шага цикла
Доступ к символам строки с помощью цикла for
Операторы инкремента (++) и декремента (-)
Составные операторы или блоки
Оператор "запятая" (или дополнительные синтаксические приемы)
выражения сравнения
Цикл while
Сравнение циклов for и while
Пауза
(Цикл do while
Циклы и ввод текста
Применение простого оператора cin для ввода данных
На помощь приходит функция cin.get(char)
Какую из функций cin.get() выбрать?
Условие конца файла
Ц* Еще одна разновидность функции cm.getQ
вложенные циклы и двумерные массивы
Инициализация двумерного массива
опросы для повторения f\'Упражнения по программированию
Глава 6. Операторы ветвления
и логические операции
Оператор if
Оператор if else
Форматирование операторов if else
Конструкция if else if else
Логические выражения
Операция логическое ИЛИ:
Оглавление
Глава 13. Наследование классов
Простой базовый класс
Порождение класса
Конструктор: доступ
Использование производного класса
Особые связи
Наследование - отношение is-a
Полиморфное открытое наследование
Разработка наших классов
Статическое и динамическое связывание
Совместимость типов указателей и ссылок
Виртуальные функции и динамическое связывание
Зачем нужны два вида связывания?
Как работают виртуальные функции
Что следует знать о виртуальных функциях
Управление доступом - protected
Абстрактные базовые классы
Применение концепции абстрактных базовых классов
Наследование и динамическое распределение памяти
Случай 1. В производном классе не используется оператор new
Случай 2. В производном классе используется оператор new
Пример наследования с динамическим распределением памяти
и дружественными конструкциями
Обзор структуры класса
Функции-элементы, которые генерирует компилятор
Другие соображения по поводу методов класса
Соображения по поводу открытого наследования
Итоговый анализ функций класса
Резюме
Вопросы для повторения
Упражнения по программированию
Глава 14. Повторное использование
программного кода в C++
Классы, включающие элементы объектов
Класс ArrayDb
Пример класса Student
Закрытое наследование
Пример класса Student (новая версия)
Множественное наследование
Определение количества рабочих
Выбор метода
Некоторые итоги по теме множественного наследования
Шаблоны классов
Определение шаблона класса
Использование шаблонного класса
Более подробное рассмотрение шаблона класса
Шаблон массива и аргументы, не являющиеся типами
Универсальный характер шаблонов
Специализации шаблонов
Шаблоны-элементы
Шаблоны в качестве параметров
Шаблоны классов и дружественные элементы
Резюме
Вопросы для повторения
Упражнения по программированию
Глава 15. Дружественные конструкции, исключения и
прочее
Дружественные структуры
Дружественные классы
Дружественные функции-элементы
Другие дружественные отношения
Вложенные классы
Вложенные классы и доступ
Вложение в шаблоне
Обработка исключительных ситуаций
Примечания к программе
Механизм обработки исключительных ситуаций
Примечания к программе
Разносторонний характер исключений
Исключения и классы
Исключения и наследование
Класс exception
Исключение bad_alloc и оператор new
Проблемы, связанные с обработкой исключительных ситуаций
Замечание об исключениях
Библиотека RTTI
Назначение RTTI
Принципы функционирования RTTI
Операторы приведения типов
Резюме
Вопросы для повторения
Упражнения по программированию
Глава 16. Класс string и стандартная
библиотека шаблонов
Класс string
Создание строки
Реализация ввода в классе string
Работа со строками
Класс auto_ptr
Использование шаблона auto_ptr
o Некоторые замечания относительно auto_ptr
Стандартная библиотека шаблонов
Шаблон класса vector
Операции, допустимые при работе с шаблонами vector
Дополнительные операции с векторами
Оглавление
Обобщенное программирование8
Почему именно итераторы?8
Типы итераторов8
Типы контейнеров8
Последовательности8i
Класс vector8
Класс deque
Класс list
Класс queue
Класс priority_queue8
Класс stack8
Ассоциативные контейнеры8
Функциональные объекты (функторы)
Концепции функторов
Предопределенные функторы{
Адаптируемые функторы и функции-адаптеры
Алгоритмы
Группы алгоритмов
Общие свойства
STL и класс string
Функции и контейнерные методы
Использование STL
Другие библиотеки
Резюме
Вопросы для повторения
Упражнения по программированию
Глава 17. Ввод/вывод данных и работа
файлами8;
Обзор ввода/вывода данных в C++
Потоки и буферы
Потоки, буферы и файл iostream
Перенаправление
Вывод с помощью cout
Перегруженный оператор
Другие методы класса ostream
Очистка буфера вывода
Форматирование вывода с помощью cout
Ввод данных с помощью cin
Как cin " рассматривает поток ввода
Состояния потока
Другие методы класса istream
Другие методы класса istream
Ввод/вывод файлов
Простая работа с файлами
Открытие нескольких файлов
Работа в режиме командной строки
Проверка потока и функция is_open()
Режимы файлов
Произвольный доступ к файлам
Внутреннее форматирование
Что дальше?
Резюме
Вопросы для повторения
Упражнения по программированию
Приложение А. Системы счисления
Приложение В. Ключевые слова языка C++,
Приложение С. Таблица кодов ASCII,
Приложение D. Приоритет операций
Приложение Е. Другие операции
Приложение F. Шаблон класса STRING
Приложение G. Методы и функции
библиотеки STL
Приложение Н. Рекомендуемая литература.
Приложение I. Преобразование программного
кода в соответствии со стандартом
ANSI/ISO C++
Приложение J . Ответы на вопросы
для повторения