Книга Язык программирования C++. Базовый курс (5-е издание) - лучшее руководство по программированию и справочник по языку, полностью пересмотренное и обновленное под стандарт C++11! Книга "Язык программирования C++. Базовый курс" - новое издание популярного и исчерпывающего бестселлера по языку программирования C++, которое было полностью пересмотрено и обновлено под стандарт C++11. Оно поможет вам быстро изучить язык и использовать его весьма эффективными и передовыми способами. В соответствии с самыми передовыми и современными методиками изложения материала авторы демонстрируют использование базового языка и его стандартной библиотеки для разработки эффективного, читабельного и мощного кода. С самого начала книги "Язык программирования C++. Базовый курс" читатель знакомится со стандартной библиотекой C++, ее самыми популярными функциями и средствами, что позволяет сразу же приступить к написанию полезных программ, еще не овладев всеми нюансами языка. Большинство примеров из книги было пересмотрено так, чтобы использовать новые средства языка и продемонстрировать их наилучшие способы применения. Книга "Язык программирования C++. Базовый курс" - не только проверенное руководство для новичков в C++, она содержит также авторитетное обсуждение базовых концепций и методик языка C++ и является ценным ресурсом для опытных программистов, особенно желающих побыстрей узнать об усовершенствованиях C++11.
Название: Язык программирования C++. Базовый курс Автор: Стенли Б. Липпман, Жози Лажойе, Барбара Э. Му Издательство: Вильямс Год: 2014 Страниц: 1120 Формат: DJVU Размер: 52,1 МБ ISBN: 978-5-8459-1839-0 Качество: Отличное Язык: Русский
Содержание:
Введение Для кого написана эта книга Изменения в пятом издании Соглашения, принятые в книге От издательства Глава 1. Первые шаги 1.1. Создание простой программы на языке C++ 1.1.1. Компиляция и запуск программы 1.2. Первый взгляд на ввод-вывод 1.3. Несколько слов о комментариях 1.4. Средства управления 1.4.1. Оператор while 1.4.2. Оператор for 1.4.3. Ввод неизвестного количества данных 1.4.4. Оператор if 1.5. Введение в классы 1.5.1. Класс Sales_item 1.5.2. Первый взгляд на функции-члены 1.6. Программа для книжного магазина Резюме Термины Часть I. Основы Глава 2. Переменные и базовые типы 2.1. Простые встроенные типы 2.1.1. Арифметические типы 2.1.2. Преобразование типов 2.1.3. Литералы 2.2. Переменные 2.2.1. Определения переменных 2.2.2. Объявления и определения переменных 2.2.3. Идентификаторы 2.2.4. Область видимости имен 2.3. Составные типы 2.3.1. Ссылки 2.3.2. Указатели 2.3.3. Понятие описаний составных типов 2.4. Спецификатор const 2.4.1. Ссылка на константу 2.4.2. Указатели и спецификатор const 2.4.3. Спецификатор const верхнего уровня 2.4.4. Переменные constexpr и константные выражения 2.5. Работа с типами 2.5.1. Псевдонимы типов 2.5.2. Спецификатор типа auto 2.5.3. Спецификатор типа decltype 2.6. Определение собственных структур данных 2.6.1. Определение типа Sales_data 2.6.2. Использование класса Sales_data 2.6.3. Создание собственных файлов заголовка Резюме Термины Глава 3. Типы string, vector и массивы 3.1. Пространства имен и объявления using 3.2. Библиотечный тип string 3.2.1. Определение и инициализация строк 3.2.2. Операции со строками 3.2.3. Работа с символами строки 3.3. Библиотечный тип vector 3.3.1. Определение и инициализация векторов 3.3.2. Добавление элементов в вектор 3.3.3. Другие операции с векторами 3.4. Знакомство с итераторами 3.4.1. Использование итераторов 3.4.2. Арифметические действия с итераторами 3.5. Массивы 3.5.1. Определение и инициализация встроенных массивов 3.5.2. Доступ к элементам массива 3.5.3. Указатели и массивы 3.5.4. Символьные строки в стиле С 3.5.5. Взаимодействие с устаревшим колом 3.6. Многомерные массивы Резюме Термины Глава 4. Выражения 4.1. Основы 4.1.1. Фундаментальные концепции 4.1.2. Приоритет и порядок 4.1.3. Порядок вычисления 4.2. Арифметические операторы 4.3. Логические операторы и операторы отношения 4.4. Операторы присвоения 4.5. Операторы инкремента и декремента 4.6. Операторы доступа к членам 4.7. Условный оператор 4.8. Побитовые операторы 4.9. Оператор sizeof 4.10. Оператор запятая 4.11. Преобразование типов 4.11.1. Арифметические преобразования 4.11.2. Другие неявные преобразования 4.11.3. Явные преобразования 4.12. Таблица приоритетов операторов Резюме Термины Глава 5. Операторы 5.1. Простые операторы 5.2. Операторная область видимости 5.3. Условные операторы 5.3.1. Оператор if 5.3.2. Оператор switch 5.4. Итерационные операторы 5.4.1. Оператор while 5.4.2. Традиционный оператор for 5.4.3. Серийный оператор for 5.4.4. Оператор do while 5.5. Операторы перехода 5.5.1. Оператор break 5.5.2. Оператор continue 5.5.3. Оператор goto 5.6. Блоки try и обработка исключений 5.6.1. Оператор throw 5.6.2. Блок try 5.6.3. Стандартные исключения Резюме Термины Глава 6. Функции 6.1. Основы функций 6.1.1. Локальные объекты 6.1.2. Объявление функций 6.1.3. Раздельная компиляция 6.2. Передача аргументов 6.2.1. Передача аргумента по значению 6.2.2. Передача аргумента по ссылке 6.2.3. Константные параметры и аргументы 6.2.4. Параметры в виде массива 6.2.5. Функция main(): обработка параметров командной строки 6.2.6. Функции с переменным количеством параметров 6.3. Типы возвращаемого значения и оператор return 6.3.1. Функции без возвращаемого значения 6.3.2. Функции, возвращающие значение 6.3.3. Возвращение указателя на массив 6.4. Перегруженные функции 6.4.1. Перегрузка и область видимости 6.5. Специальные средства 6.5.1. Аргументы по умолчанию 6.5.2. Встраиваемые функции и функции constexpr 6.5.3. Помощь в отладке 6.6. Подбор функции 6.6.1. Преобразование типов аргументов 6.7. Указатели на функции Резюме Термины Глава 7. Классы 7.1. Определение абстрактных типов данных 7.1.1. Разработка класса Salesdata 7.1.2. Определение пересмотренного класса Salesdata 7.1.3. Определение функций, не являющихся членом класса, но связанных с ним 7.1.4. Конструкторы 7.1.5. Копирование, присвоение и удаление 7.2. Управление доступом и инкапсуляция 7.2.1. Друзья 7.3. Дополнительные средства класса 7.3.1. Снова о членах класса 7.3.2. Функции, возвращающие указатель *this 7.3.3. Типы классов 7.3.4. Снова о дружественных отношениях 7.4. Область видимости класса 7.4.1. Поиск имен в области видимости класса 7.5. Снова о конструкторах 7.5.1. Список инициализации конструктора 7.5.2. Делегирующий конструктор 7.5.3. Роль стандартного конструктора 7.5.4. Неявное преобразование типов класса 7.5.5. Агрегатные классы 7.5.6. Литеральные классы 7.6. Статические члены класса Резюме Термины Часть II. Библиотека C++ Глава 8. Библиотека ввода и вывода 8.1. Классы ввода-вывода 8.1.1. Объекты ввода-вывода не допускают копирования и присвоения 8.1.2. Флаги состояния 8.1.3. Управление буфером вывода 8.2. Ввод и вывод в файл 8.2.1. Использование объектов файловых потоков 8.2.2. Режимы файла 8.3. Строковые потоки 8.3.1. Использование класса istringstream 8.3.2. Использование класса ostringstream Резюме Термины Глава 9. Последовательные контейнеры 9.1. Обзор последовательных контейнеров 9.2. Обзор библиотечных контейнеров 9.2.1. Итераторы 9.2.2. Типы-члены классов контейнеров 9.2.3. Функции-члены begin() и end() 9.2.4. Определение и инициализация контейнера 9.2.5. Присвоение и функция swap() 9.2.7. Операторы сравнения 9.3. Операции с последовательными контейнерами 9.3.1. Добавление элементов в последовательный контейнер 9.3.2. Доступ к элементам 9.3.3. Удаление элементов 9.3.4. Специализированные функции контейнера forward_list 9.3.5. Изменение размеров контейнера 9.3.6. Некоторые операции с контейнерами делают итераторы недопустимыми 9.4. Как увеличивается размер вектора 9.5. Дополнительные операции со строками 9.5.1. Дополнительные способы создания строк 9.5.2. Другие способы изменения строки 9.5.3. Операции поиска строк 9.5.4. Сравнение строк 9.5.5. Числовые преобразования 9.6. Адаптеры контейнеров Резюме Термины Глава 10. Обобщенные алгоритмы 10.1. Краткий обзор 10.2. Первый взгляд на алгоритмы 10.2.1. Алгоритмы только для чтения 10.2.2. Алгоритмы, записывающие элементы контейнера 10.2.3. Алгоритмы, переупорядочивающие элементы контейнера 10.3. Перенастройка функций 10.3.1. Передача функций алгоритму 10.3.2. Лямбда-выражения 10.3.3. Захват и возвращение значений лямбда-выражениями 10.3.4. Привязка аргументов 10.4. Возвращаясь к итераторам 10.4.1. Итераторы вставки 10.4.2. Потоковые итераторы 10.4.3. Реверсивные итераторы 10.5. Структура обобщенных алгоритмов 10.5.1. Пять категорий итераторов 10.5.2. Параметрическая схема алгоритмов 10.5.3. Соглашения об именовании алгоритмов 10.6. Алгоритмы, специфические для контейнеров Резюме Термины Глава 11. Ассоциативные контейнеры 11.1. Использование ассоциативных контейнеров 11.2. Обзор ассоциативных контейнеров 11.2.1. Определение ассоциативного контейнера 11.2.2. Требования к типу ключа 11.2.3. Тип pair 11.3. Работа с ассоциативными контейнерами 11.3.1. Итераторы ассоциативных контейнеров 11.3.2. Добавление элементов 11.3.3. Удаление элементов 11.3.4. Индексация карт 11.3.5. Доступ к элементам 11.3.6. Карта преобразования слов 11.4. Неупорядоченные контейнеры Использование неупорядоченного контейнера Управление ячейками Требования к типу ключа неупорядоченных контейнеров Резюме Термины Глава 12. Динамическая память 12.1. Динамическая память и интеллектуальные указатели 12.1.1. Класс shared_ptr 12.1.2. Непосредственное управление памятью 12.1.3. Использование указателя sharedptr с оператором new 12.1.4. Интеллектуальные указатели и исключения 12.1.5. Класс unique_ptr 12.1.6. Класс weak_ptr 12.2. Динамические массивы 12.2.1. Оператор new и массивы 12.2.2. Класс allocator 12.3. Использование библиотеки: программа запроса текста 12.3.1. Проект программы 12.3.2. Определение классов программы запросов Резюме Термины Часть III. Инструменты для разработчиков классов Глава 13. Управление копированием 13.1. Копирование, присвоение и удаление 13.1.1. Конструктор копий 13.1.2. Оператор присвоения копии 13.1.3. Деструктор 13.1.4. Правило три/пять 13.1.5. Использование спецификатора = default 13.1.6. Предотвращение копирования 13.2. Управление копированием и ресурсами 13.2.1. Классы, действующие как значения 13.2.2. Определение классов, действующих как указатели 13.3. Функция swap() 13.4. Пример управления копированием 13.5. Классы, управляющие динамической памятью 13.6. Перемещение объектов 13.6.1. Ссылки на г-значение 13.6.2. Конструктор перемещения и присваивание при перемещении 13.6.3. Ссылки на г-значение и функции-члены Резюме Термины Глава 14. Перегрузка операторов и преобразований 14.1. Фундаментальные концепции 14.2. Операторы ввода и вывода 14.2.1. Перегрузка оператора вывода < < 14.2.2. Перегрузка оператора ввода > > 14.3. Арифметические операторы и операторы отношения 14.3.1. Операторы равенства 14.3.2. Операторы отношения 14.4. Операторы присвоения 14.5. Оператор индексирования 14.6. Операторы инкремента и декремента 14.7. Операторы доступа к членам 14.8. Оператор вызова функции 14.8.1. Лямбда-выражения - объекты функции 14.8.2. Библиотечные объекты функций 14.8.3. Вызываемые объекты и тип function 14.9. Перегрузка, преобразование и операторы 14.9.1. Операторы преобразования 14.9.2. Избегайте неоднозначных преобразований 14.9.3. Подбор функций и перегруженные операторы Резюме Термины Глава 15. Объектно-ориентированное программирование 15.1. Краткий обзор ООП 15.2. Определение базовых и производных классов 15.2.1. Определение базового класса 15.2.2. Определение производного класса 15.2.3. Преобразования и наследование 15.3. Виртуальные функции 15.4. Абстрактные базовые классы 15.5. Управление доступом и наследование 15.6. Область видимости класса при наследовании 15.7. Конструкторы и функции управления копированием 15.7.1. Виртуальные деструкторы 15.7.2. Синтезируемые функции управления копированием и наследование 15.7.3. Функции-члены управления копированием производного класса 15.7.4. Унаследованные конструкторы 15.8. Контейнеры и наследование 15.8.1. Разработка класса Basket 15.9. Возвращаясь к запросам текста 15.9.1. Объектно-ориентированное решение 15.9.2. Классы Query_base и Query 15.9.3. Производные классы 15.9.4. Виртуальные функции eval() Резюме Термины Глава 16. Шаблоны и обобщенное программирование 16.1. Определение шаблона 16.1.1. Шаблоны функций 16.1.2. Шаблоны класса 16.1.3. Параметры шаблона 16.1.4. Шаблоны-члены 16.1.5. Контроль создания экземпляра 16.1.6. Эффективность и гибкость 16.2. Дедукция аргумента шаблона 16.2.1. Преобразования и параметры типа шаблона 16.2.2. Явные аргументы шаблона функции 16.2.3. Замыкающие типы возвращаемого значения и трансформация типа 16.2.4. Указатели на функцию и дедукция аргумента 16.2.5. Дедукция аргумента шаблона и ссылки 16.2.6. Функция std::move() 16.2.7. Перенаправление 16.3. Перегрузка и шаблоны 16.4. Шаблоны с переменным количеством аргументов 16.4.1. Шаблоны функции с переменным количеством аргументов 16.4.2. Развертывание пакета 16.4.3. Перенаправление пакетов параметров 16.5. Специализация шаблона Резюме Термины Часть IV. Дополнительные темы Глава 17. Специализированные средства библиотек 17.1. Тип tuple 17.1.1. Определение и инициализация кортежей 17.1.2. Использование кортежей для возвращения нескольких значений 17.2. Тип bitset 17.2.1. Определение и инициализация наборов битов 17.2.2. Операции с наборами битов 17.3. Регулярные выражения 17.3.1. Использование библиотеки регулярных выражений 17.3.2. Типы итераторов классов соответствия и regex 17.3.3. Использование подвыражений 17.3.4. Использование функции regex_replace() 17.4. Случайные числа 17.4.1. Процессоры случайных чисел и распределения 17.4.2. Другие виды распределений 17.5. Еще о библиотеке ввода и вывода 17.5.1. Форматированный ввод и вывод 17.5.2. Не форматированные операции ввода-вывода 17.5.3. Произвольный доступ к потоку Резюме Термины Глава 18. Инструменты для крупномасштабных программ 18.1. Обработка исключений 18.1.1. Передача исключений 18.1.2. Обработка исключения 18.1.3. Блок try функции и конструкторы 18.1.4. Спецификатор исключения noexcept 18.1.5. Иерархии классов исключений 18.2. Пространства имен 18.2.1. Определение пространств имен 18.2.2. Использование членов пространства имен 18.2.3. Классы, пространства имен и области видимости 18.2.4. Перегрузка и пространства имен 18.3. Множественное и виртуальное наследование 18.3.1. Множественное наследование 18.3.2. Преобразования и несколько базовых классов 18.3.3. Область видимости класса при множественном наследовании 18.3.4. Виртуальное наследование 18.3.5. Конструкторы и виртуальное наследование Резюме Термины Глава 19. Специализированные инструменты и технологии 19.1. Контроль распределения памяти 19.1.1. Перегрузка операторов new и delete 19.1.2. Размещающий оператор new 19.2. Идентификация типов времени выполнения 19.2.1. Оператор dynamic_cast 19.2.2. Оператор typeid 19.2.3. Использование RTTI 19.2.4. Класс type_info 19.3. Перечисления 19.4. Указатель на член класса 19.4.1. Указатели на переменные-члены 19.4.2. Указатели на функции-члены 19.4.3. Использование функций-членов как вызываемых объектов 19.5. Вложенные классы 19.6. Класс объединения, экономящий место 19.7. Локальные классы 19.8. Возможности, снижающие переносимость 19.8.1. Битовые поля 19.8.2. Спецификатор volatile 19.8.3. Директивы компоновки: extern «С» Резюме Термины Приложение А. Библиотека А.1. Имена и заголовки стандартной библиотеки А.2. Краткий обзор алгоритмов А.2.1. Алгоритмы поиска объекта А.2.2. Другие алгоритмы, осуществляющие только чтение А.2.3. Алгоритмы бинарного поиска А.2.4. Алгоритмы записи в элементы контейнера А.2.5. Алгоритмы сортировки и разделения А.2.6. Общие функции изменения порядка А.2.7. Алгоритмы перестановки А.2.8. Алгоритмы набора для отсортированных последовательностей А.2.9. Минимальные и максимальные значения А.2.10. Числовые алгоритмы А.3. Случайные числа А.3.1. Распределение случайных чисел А.3.2. Процессоры случайных чисел Предметный указатель