C++. Базовый курс.
- Глава 1: Из истории создания C++ ⇢
- Истоки C++
- Создание языка С.
- Предпосылки возникновения языка C++
- Рождение C++
- Эволюция C++
- Что такое объектно-ориентированное программирование.
- Инкапсуляция.
- Полиморфизм.
- Наследование.
- C++ и реализация ООП.
- Связь C++ с языками Java и C#
- Глава 2: Обзор элементов языка C++ ⇢
- Первая С++-программа.
- Ввод текста программы.
- Компилирование программы.
- Выполнение программы.
- Построчный "разбор полетов".
- Обработка синтаксических ошибок.
- Вторая С++-программа.
- Более реальный пример.
- Новый тип данных.
- Повторим пройденное.
- Функции.
- Программа с двумя функциями.
- Аргументы функций.
- Функции, возвращающие значения.
- Функция main().
- Общий формат С++-функций.
- Некоторые возможности вывода данных.
- Две простые инструкции.
- Инструкция if.
- Цикл for.
- Блоки кода.
- Точки с запятой и расположение инструкции.
- Практика отступов.
- Ключевые слова C++
- Идентификаторы в C++
- Стандартная библиотека C++
- Глава 3: Основные типы данных. ⇢
- Объявление переменных.
- Локальные переменные.
- Формальные параметры.
- Глобальные переменные.
- Модификаторы типов.
- Литералы.
- Шестнадцатеричные и восьмеричные литералы.
- Строковые литералы.
- Управляющие символьные последовательности.
- Инициализация переменных.
- Операторы.
- Арифметические операторы.
- Инкремент и декремент.
- История происхождения имени C++
- Операторы отношений и логические операторы.
- Выражения.
- Преобразование типов в выражениях.
- Преобразования, связанные с типом bool.
- Приведение типов.
- Использование пробелов и круглых скобок.
- Глава 4: Инструкции управления. ⇢
- Инструкция if.
- Условное выражение.
- Вложенные if-инструкции.
- Конструкция if-else-if.
- Цикл for.
- Вариации на тему цикла for.
- Отсутствие элементов в определении цикла.
- Бесконечный цикл.
- Циклы временной задержки.
- Инструкция switch.
- Вложенные инструкции switch.
- Цикл while.
- Цикл do-while.
- Использование инструкции continue.
- Использование инструкции break для выхода из цикла.
- Вложенные циклы.
- Инструкция goto.
- Итак, подведем итоги...
- Глава 5: Массивы и строки. ⇢
- Одномерные массивы.
- На границах массивов погранзаставы нет.
- Сортировка массива.
- Строки.
- Считывание строк с клавиатуры.
- Некоторые библиотечные функции обработки строк.
- Функция strcpy().
- Функция strcat().
- Функция strcmp().
- Функция strlen().
- Использование признака завершения строки.
- Двумерные массивы.
- Многомерные массивы.
- Инициализация массивов.
- "Безразмерная" инициализация массивов.
- Массивы строк.
- Пример использования массивов строк.
- Глава 6: Указатели. ⇢
- Что представляют собой указатели.
- Операторы, используемые с указателями.
- О важности базового типа указателя.
- Присваивание значений с помощью указателей.
- Использование указателей в выражениях.
- Арифметические операции над указателями.
- Сравнение указателей.
- Указатели и массивы.
- Индексирование указателя.
- О взаимозаменяемости указателей и массивов.
- Указатели и строковые литералы.
- Все познается в сравнении.
- Массивы указателей.
- Соглашение о нулевых указателях
- Указатели и 16-разрядные среды.
- Многоуровневая непрямая адресация.
- Проблемы, связанные с использованием указателей.
- Неинициализированные указатели.
- Некорректное сравнение указателей.
- Не забывайте об установке указателей.
- Глава 7:Функции, часть первая: ОСНОВЫ. ⇢
- Правила действия областей видимости функций.
- Локальные переменные.
- Объявление переменных в итерационных инструкциях и инструкциях выбора.
- Формальные параметры.
- Глобальные переменные.
- Передача указателей и массивов в качестве аргументов.
- Вызов функций с указателями.
- Вызов функций с массивами.
- Передача функциям строк.
- Аргументы функции main(): argc и argv
- Передача числовых аргументов командной строки.
- Преобразование числовых строк в числа.
- Инструкция return.
- Завершение функции.
- Возврат значений.
- Функции, которые не возвращают значений (void-функции).
- Функции, которые возвращают указатели.
- Прототипы функций.
- Подробнее о заголовках
- Сравнение старого и нового стилей объявления параметров функций.
- Рекурсия.
- Глава 8: Функции, часть вторая: ссылки, перегрузка и использование аргументов по умолчанию. ⇢
- Два способа передачи аргументов.
- Как в C++ реализована передача аргументов.
- Использование указателя для обеспечения вызова по ссылке.
- Ссылочные параметры.
- Объявление ссылочных параметров.
- Возврат ссылок.
- Создание ограниченного массива.
- Независимые ссылки.
- Ограничения при использовании ссылок.
- Перегрузка функций.
- Анахронизм в виде ключевого слова overload.
- Аргументы, передаваемые функции по умолчанию
- Сравнение возможности передачи аргументов по умолчанию с перегрузкой функций.
- Об использовании аргументов, передаваемых по умолчанию.
- Глава 9: Еще о типах данных и операторах. ⇢
- Спецификаторы типа const и volatile.
- Спецификатор типа const.
- Спецификатор типа volatile.
- Спецификаторы классов памяти.
- Спецификатор класса памяти auto.
- Спецификатор класса памяти extern.
- Статические переменные.
- Локальные static-переменные.
- Глобальные static-переменные.
- Регистровые переменные.
- Происхождение модификатора register.
- Перечисления
- Ключевое слово typedef.
- Еще об операторах
- Поразрядные операторы
- Поразрядные операторы И, ИЛИ, исключающее ИЛИ и НЕ.
- Операторы сдвига.
- Оператор "знак вопроса".
- Составные операторы присваивания.
- Оператор "запятая".
- Несколько присваиваний "в одном".
- Использование ключевого слова sizeof.
- Динамическое распределение памяти с использованием операторов new и delete.
- Инициализация динамически выделенной памяти.
- Выделение памяти для массивов.
- Динамическое распределение памяти в языке С: функции malloc() и free().
- Сводная таблица приоритетов С++-операторов.
- Глава 10: Структуры и объединения. ⇢
- Структуры.
- Доступ к членам структуры.
- Массивы структур.
- Простой пример инвентаризации склада.
- Передача структур функциям.
- Присваивание структур.
- Использование указателей на структуры и оператора "стрелка".
- Пример использования указателей на структуры.
- Ссылки на структуры.
- Использование в качестве членов структур массивов и структур.
- Сравнение С- и С++-структур.
- Битовые поля структур.
- Объединения.
- Анонимные объединения.
- Использование оператора sizeof для гарантии переносимости программного кода.
- Переходим к объектно-ориентированному программированию.
- Глава 11: Введение в классы. ⇢
- Основы понятия класса.
- Общий формат объявления класса.
- Доступ к членам класса.
- Конструкторы и деструкторы.
- Параметризованные конструкторы.
- Альтернативный вариант инициализации объекта.
- Классы и структуры — родственные типы.
- Сравнение структур с классами.
- Объединения и классы — родственные типы.
- Встраиваемые функции.
- Использование встраиваемых функций в определении класса.
- Массивы объектов.
- Инициализация массивов объектов.
- Указатели на объекты.
- Ссылки на объекты.
- Глава 12: О классах подробнее. ⇢
- Функции-"друзья".
- Перегрузка конструкторов.
- Динамическая инициализация.
- Применение динамической инициализации к конструкторам.
- Присваивание объектов.
- Передача объектов функциям.
- Конструкторы, деструкторы и передача объектов.
- Потенциальные проблемы при передаче параметров.
- Возвращение объектов функциями.
- Потенциальная проблема при возвращении объектов функциями.
- Создание и использование конструктора копии.
- Конструкторы копии и параметры функции.
- Использование конструкторов копии при инициализации объектов.
- Использование конструктора копии при возвращении функцией объекта.
- Конструкторы копии — а нельзя ли найти что-то попроще?
- Ключевое слово this.
- Глава 13: Перегрузка операторов. ⇢
- Перегрузка операторов с использованием функций-членов.
- Использование функций-членов для перегрузки унарных операторов.
- Советы по реализации перегрузки операторов.
- О значении порядка операндов.
- Перегрузка операторов с использованием функций-не членов класса.
- Использование функций-"друзей" для перегрузки унарных операторов.
- Перегрузка операторов отношения и логических операторов.
- Подробнее об операторе присваивания.
- Перегрузка оператора индексации массивов ([]).
- Перегрузка оператора "()".
- Перегрузка других операторов.
- Еще один пример перегрузки операторов.
- Глава 14: Наследование. ⇢
- Понятие о наследовании.
- Управление доступом к членам базового класса.
- Использование защищенных членов.
- Использование спецификатора protected для наследования базового класса.
- Об использовании спецификаторов public, protected и private.
- Наследование нескольких базовых классов.
- Конструкторы, деструкторы и наследование.
- Когда выполняются конструкторы и деструкторы.
- Передача параметров конструкторам базового класса.
- Предоставление доступа.
- Чтение С++-графов наследования.
- Виртуальные базовые классы.
- Глава 15: Виртуальные функции и полиморфизм. ⇢
- Указатели на производные типы.
- Ссылки на производные типы.
- Виртуальные функции.
- Наследование виртуальных функций.
- Зачем нужны виртуальные функции.
- Простое приложение виртуальных функций.
- Чисто виртуальные функции и абстрактные классы.
- Сравнение раннего связывания с поздним.
- Полиморфизм и пуризм.
- Глава 16: Шаблоны. ⇢
- Обобщенные функции.
- Функция с двумя обобщенными типами.
- Явно заданная перегрузка обобщенной функции.
- Перегрузка шаблона функции.
- Использование стандартных параметров в шаблонных функциях.
- Ограничения при использовании обобщенных функций.
- Создание обобщенной функции abs().
- Обобщенные классы.
- Пример класса с двумя обобщенными типами данных.
- Создание обобщенного класса безопасного массива.
- Использование в обобщенных классах аргументов, не являющихся типами.
- Использование в шаблонных классах аргументов по умолчанию.
- Явно задаваемые специализации классов.
- Глава 17: Обработка исключительных ситуации. ⇢
- Основы обработки исключительных ситуаций.
- Функции exit() и abort().
- Перехват исключений классового типа.
- Использование нескольких catch-инструкций.
- Перехват исключений базового класса.
- Варианты обработки исключений.
- Перехват всех исключений.
- Ограничения, налагаемые на тип исключений, генерируемых функциями.
- Повторное генерирование исключения.
- Обработка исключений, сгенерированных оператором new.
- Альтернативная форма оператора new — nothrow.
- Перегрузка операторов new и delete.
- Перегрузка nothrow-версии оператора new.
- Глава 18: С++-система ввода-вывода. ⇢
- Сравнение старой и новой С++-систем ввода-вывода.
- Потоки C++
- Встроенные С++-потоки.
- Классы потоков.
- Перегрузка операторов ввода-вывода.
- Создание перегруженных операторов вывода.
- Использование функций-"друзей" для перегрузки операторов вывода.
- Перегрузка операторов ввода.
- Сравнение С- и С++-систем ввода-вывода.
- Форматированный ввод-вывод данных.
- Форматирование данных с использованием функций-членов класса ios.
- Установка ширины поля, точности и символов заполнения.
- Использование манипуляторов ввода-вывода.
- Создание собственных манипуляторных функций.
- Файловый ввод-вывод.
- Как открыть и закрыть файл.
- Чтение и запись текстовых файлов.
- Неформатированный ввод-вывод данных в двоичном режиме.
- Использование функций get() и put().
- Считывание и запись в файл блоков данных.
- Обнаружение конца файла.
- Пример сравнения файлов.
- Использование других функций двоичного ввода-вывода.
- Произвольный доступ.
- Проверка статуса ввода-вывода.
- Использование перегруженных операторов ввода-вывода при работе с файлами.
- Глава 19: Динамическая идентификация типов и операторы приведения типа. ⇢
- Динамическая идентификация типов (RTTI).
- Пример RTTI-приложения.
- Применение оператора typeid к шаблонным классам.
- Операторы приведения типов.
- Оператор dynamic_cast.
- Оператор const_cast.
- Оператор static_cast.
- Оператор reinterpret_cast.
- Сравнение обычной операции приведения типов с новыми четырьмя cast-операторами.
- Глава 20: Пространства имен и другие темы. ⇢
- Пространства имен.
- Понятие пространства имен.
- Инструкция using.
- Неименованные пространства имен.
- Пространство имен std.
- Указатели на функции.
- Как найти адрес перегруженной функции.
- Статические члены класса.
- Применение к функциям-членам модификаторов const и mutable.
- Использование explicit-конструкторов.
- Чем интересно неявное преобразование конструктора.
- Синтаксис инициализации членов класса.
- Использование ключевого слова asm.
- Спецификация компоновки.
- Операторы указания на члены ".*" и "->*".
- Создание функций преобразования.
- Глава 21: Введение в стандартную библиотеку шаблонов. ⇢
- Обзор STL.
- Контейнерные классы.
- Векторы.
- Доступ к вектору с помощью итератора.
- Вставка и удаление элементов из вектора.
- Сохранение в векторе объектов класса.
- О пользе итераторов.
- Списки.
- Сортировка списка.
- Объединение одного списка с другим.
- Хранение в списке объектов класса.
- Отображения
- Хранение в отображении объектов класса.
- Алгоритмы.
- Подсчет элементов.
- Удаление и замена элементов.
- Реверсирование последовательности.
- Преобразование последовательности.
- Исследование алгоритмов.
- Класс string.
- Обзор функций-членов класса string.
- Основные манипуляции над строками.
- Поиск в строке.
- Сравнение строк.
- Получение строки с завершающим нулем.
- Хранение строк в других контейнерах.
- И еще об STL.
- Глава 22: Препроцессор C++ ⇢
- Директива #define
- Макроопределения, действующие как функции.
- Директива #еrrоr
- Директива #include.
- Директивы условной компиляции.
- Директивы #if, #else, #elif и #endif.
- Директивы #ifdef и #ifndef.
- Директива #undef.
- Использование оператора defined.
- О роли препроцессора.
- Директива #line.
- Директива #pragma.
- Операторы препроцессора "#" и "##"
- Зарезервированные макроимена.
- Мысли "под занавес".
- Приложение А: С-ориентированная система ввода-вывода. ⇢
- Использование потоков в С-системе ввода-вывода.
- Функции printf() и scanf().
- Функция printf().
- Функция scanf().
- С-система обработки файлов.
- Функция fopen().
- Функция fputc().
- Функция fgetc().
- Функция feof().
- Функция fclose().
- Использование функций fopen(), fgetc(), fputc() и fclose().
- Функции ferror() и rewind().
- Функции fread() и fwrite().
- Функция fseek() и выполнение ввода-вывода с произвольным доступом.
- Функции fprintf() и fscanf().
- Удаление файлов.
- Приложение Б: Использование устаревшего С++-компилятора. ⇢
- Два простых изменения.
- Приложение В: *.NET-расширения для C++ ⇢
- Ключевые слова .NET-среды.
- _ _abstract.
- _ _box.
- _ _delegate.
- _ _event.
- _ _finally.
- _ _gc.
- _ _identifier.
- _ _interface.
- _ _nogc.
- _ _pin.
- _ _property.
- _ _sealed.
- _ _try_cast.
- _ _typeof.
- _ _value.
- Расширения препроцессора.
- Атрибут attribute.
- Компиляция управляемых С++-программ.
- Предметный указатель. ⇢
- -Символы-
- -A-
- -B-
- -C-
- -D-
- -E-
- -F-
- -G-
- -H-
- -I-
- -J-
- -K-
- -L-
- -M-
- -N-
- -O-
- -P-
- -Q-
- -R-
- -S-
- -T-
- -U-
- -W-
- -А-
- -Б-
- -В-
- -Г-
- -Д-
- -З-
- -И-
- -К-
- -Л-
- -М-
- -Н-
- -О-
- -П-
- -Р-
- -С-
- -Т-
- -У-
- -Ф-
- -Ц-
- -Ш-
Г. Шилдт.