C++. Объектно-ориентированное программирование - Учебное пособие для студентов посвящено объектно-ориентированному программированию на языке C++. Описываются объектно-ориентированные конструкции языка, библиотека STL и их практическое применение. На примерах разработки контейнерных классов и итераторов излагаются принципы организации библиотеки STL. В связи с изложением реализации контейнеров много внимания уделено и управлению памятью. Подробно описана библиотека ввода-вывода, причем как процедурная, так и объектно-ориентированная. Дано описание ряда ключевых шаблонов программирования, связанных с конкретными конструкциями C++. В качестве примера рассмотрено приложение, разработанное с использованием полученных знаний и WinAPI. В конце каждой главы - краткое резюме, контрольные вопросы и набор заданий. Для студентов и преподавателей вузов, читателей, знакомых с основами C++, желающих стать профессиональными программистами.
Название: C++. Объектно-ориентированное программирование: Учебное пособие Автор: Лаптев В. В. Издательство: Питер Год: 2008 Страниц: 464 Формат: DJVU Размер: 8,30 МБ ISBN: 978-5-91180-200-4 Качество: Отличное Серия или Выпуск: Учебное пособие Язык: Русский
Содержание:
Введение Структура книги Использованные программные продукты Благодарности От издательства Глава 1. Классы и объекты. Зачем нужны классы? Определение класса Доступ к элементам класса Определение методов класса Указатель this Перегрузка методов Размеры объектов класса Использование класса Резюме Контрольные вопросы Упражнения Глава 2. Конструкторы Определение конструктора Конструкторы и объекты Конструкторы и параметры Деструктор Конструкторы и константы Константы в классе Инициализация константных полей Резюме Контрольные вопросы Упражнения Глава 3. Перегрузка операций Перегрузка операций внешними функциями Перегрузка операций методами класса «Подводные камни» перегрузки операций Функции-друзья класса Преобразование типов Преобразование типов и конструкторы Функции-операции преобразования Запрет неявных преобразований Классы-оболочки встроенных типов Резюме Контрольные вопросы Упражнения Глава 4. Массивы и классы Поля-массивы в классе Реализация простого класса строк Статические поля-массивы Статические элементы класса Резюме Контрольные вопросы Упражнения Глава 5. Динамическая память в C++ Память и объекты Управление динамической памятью Двухмерный динамический массив POD-типы. NonPOD-типы Еще одна форма операции new Размеры динамических объектов «Умный» массив Конструкторы Деструктор Операция индексирования Копирование и присваивание Реализация методов Использование «умного» массива Резюме Контрольные вопросы Упражнения Глава 6. Контейнеры Характеристики контейнеров Доступ к элементам контейнера Операции с контейнером Реализация контейнеров Последовательный контейнер Вложенные классы Итератор для последовательного контейнера Реализация контейнера-дека Стек Проблема универсальности Резюме Контрольные вопросы Упражнения Глава 7. Исключения Принципы обработки исключений Генерация исключений Перехват и обработка исключений. Спецификация исключений. Применение исключений Передача информации в блок обработки Классы и исключения Исключения в списке инициализации конструктора Исключения и деструкторы Стандартные исключения Подмена функций стандартного завершения Нестандартные исключения Резюме Контрольные вопросы Упражнения Глава 8. Наследование Простое наследование Простое открытое наследование Конструкторы, деструкторы и наследование Поля и методы при наследовании Вложенные классы и наследование Принцип подстановки Применение открытого наследования Закрытое наследование Резюме Контрольные вопросы Упражнения Глава 9. Виртуальные функции Зачем нужны виртуальные функции Определение виртуальных функций Переопределение и перегрузка виртуальных функций Размеры классов с виртуальными функциями Виртуальные функции в конструкторах и деструкторах Чистые виртуальные функции Виртуальные деструкторы Чистые виртуальные деструкторы Однокоренная иерархия, Виртуализация внешних функций Немного философии Резюме Контрольные вопросы Упражнения Глава 10. Множественное наследование и RTTI Множественное наследование Неоднозначность Виртуальное наследование Принцип доминирования Финальный класс Размеры классов при множественном наследовании RTTI Мультиметоды Использование RTTI Использование только виртуальных функций Резюме Контрольные вопросы Упражнения Глава 11. Шаблоны классов Первое знакомство Определение шаблона класса Внешнее определение методов Параметры шаблона - не типы Инициализация нулем Параметры шаблона по умолчанию Специализация Шаблоны и… шаблоны Поле-шаблон Параметр-шаблон Метод-шаблон Шаблоны и наследование Шаблоны и дружественность Резюме Контрольные вопросы Упражнения Глава 12. Шаблоны функций Определение шаблона функции Параметры по умолчанию Параметры шаблона - не типы Перегрузка шаблонов функций, Специализация шаблонов функций Реализация обобщенных алгоритмов Указатели на функции и указатели на методы Понятие функтора Адаптеры функторов Адаптер для указателя на метод Резюме Контрольные вопросы Упражнения Глава 13. Программы и модули Сборка исходных текстов «Стражи» включения Системные включаемые файлы… Отделение интерфейса от реализации Шаблоны и модули Модель включения Явное инстанцирование Межмодульное взаимодействие Межмодульные переменные и функции Локализация имен в модуле Альтернативные спецификации компоновки Инициализация глобальных объектов Статические элементы в шаблонах Пространства имен Именованные пространства^ имен Неименованные пространства имен Резюме Контрольные вопросы Упражнения Глава 14. Библиотека ввода-вывода Иерархия классов Принципы организации потоков Стандартные потоки Вывод элементарных типов и строк Ввод элементарных типов Ввод строк Состояния потока Состояние потока и логические условия Состояние потока и исключения… Работа с файлами Текстовые файлы Пример обработки текстовых файлов Режимы открытия потоков (файлов) Двоичные файлы Ввод-вывод объектов в двоичный файл Сериализация Форматирование ввода-вывода Флаги форматирования Методы форматирования Манипуляторы Форматированный ввод Написание собственных манипуляторов Применение средств форматирования Строковые потоки Перегрузка операций ввода-вывода Произвольный доступ Буферизация Широкие потоки Ввод и вывод широких символов Кириллица и локальный контекст Широкие строковые потоки Широкие файловые потоки Резюме Контрольные вопросы Упражнения Приложение. Строки в C++ Обработка строк в стиле C Функции для работы с массивами типа char[] Функции для работы с массивами типа wchar_t[] Строки в стиле C++ Литература