Содержание

1. ВВЕДЕНИЕ 3
1.1. История ЯЗЫКИ Си++ 3
1.2. Назначение Си++и области его использования 4
1.3. Стандарт языка 6

2. ОБЪЕКТНАЯ МОДЕЛЬ ЯЗЫКА СИ++.8
2.1. Понятие объекта 8
2.2. Что такое объектно-ориентированное программирование? 10
2.3. Клас, тип и объект в языке Си++ 12

3. НАЧАЛЬНЫЕ СВЕДЕНИЯ ОБ ЯЗЫКЕ 14
3.1. Простейшая программа 14
3.2. Компиляция и выполнение программы 15
3.2.1. Компилирование и выполнение программы среде Windows 16
3.2.2. Компилирование и выполнение программ в среде Unix 16
3.3. Структура программы на языке Си++ 17
3.3.1. Запись программ 17
3.3.2. Имена 18
3.3,3. Переменные и константы 18
3.3.4, Операторы 20
3.3.5. Функции 33
3.4. Стиль записи программ 40

4. ТИПЫ ДАННЫХ, КЛАССЫ И ОБЪЕКТЫ 43
4.1. Встроенные типы данных 43
4.1.1. Целые числа 43
4.1.2. Вещественные числа 47
4.1.3. Логические величины 48
4.1.4. Символы и байты 49
4.1.5. Наборы перечисляемых значений 51
4.2. Классы и объекты 52
4.2.1. Подписи методов и необязательные, аргументы 55
4.2.2. Запись классов 58

5. ПРОИЗВОДНЫЕ ТИПЫ ДАННЫХ 57
5.1. Массивы 57
5.2. Структуры 59
5.2.1. Битовые ПОЛЯ 60
5.3. Объединения 60
5.4. Указатели 62
5.4.1. Адресная арифметика 65
5.4.2. Связь между массивами и указателями 67
5.4.3. Бестиповый указатель 68
5.4.4. Нулевой указатель 68
5.5. Строки и литералы 69
5.6. Распределение памяти 72
5.7. Ссылки 76
5.7.1. Распределение памяти при передаче аргументов функции 77
5.8. Использование описателя const 81
5.9. Переименование типов 83

6. КЛАССЫ 84
6.1 .Контроль доступа к объекту 84
6.1.1. Доступ по чтению и по записи 87
6.2. Оптимизация записи простых методов 88
6.3. Конструкторы и деструкторы 89
6.4. Переопределение операций .; 95
6.5. Производные классы, наследование 101
6.5.1. Виртуальные методы 105
6.5.2. Преобразование базового и производного классов 109
6.5.3. Внутреннее и защищенное наследование 110
6.6. Абстрактные классы 110
6.7. Инициализация объектов 112
6.8. Множественное наследование 117
6.8.1. Виртуальное наследование 120
6.9. Операции new и delete 121
6.10. Преобразования типов 123
6.10.1. Явные преобразования типов 124
6.10.2. Стандартные преобразования типов 125
6.10.3. Преобразования указателей и ссылок 126
6.10.4. Преобразования типов,, определенных в программе 127
6.11. Динамическое определение типов 128
6.12. Указатели на элементы класса 132

7. СТРУКТУРА СЛОЖНЫХ ПРОГРАММ 134
Компоновка нескольких файлов в одну программу 134
Включаемые файлы 135
Файлы и переменные 140
7 4. Область видимости имен 148
7.5 Оператор определения контекста namespace 150

8. ОБРАБОТКА ОШИБОК 152
Ошибки неизбежны 152
Возвращаемое значение как признак ошибки 153
8.3. Исключительные ситуации 156
8.4. Обработка исключительных ситуаций 158

9. ВВОД-ВЫВОД 162
9.1. Потоки 162
9.1.1. Манипуляторы и форматирование ввода-вывода 164
9.2. Строковые потоки 166
9.3. Ввод-вывод файлов 167

10. ШАБЛОНЫ 171
10.1. Зачем нужны шаблоны 171
10 2. Функции-шаблоны 171
10 3. Шаблоны классов 173
10.3.1. Интеллигентный указатель 175
10.3 2. Задание свойств класса 178

11. БИБЛИОТЕКИ КЛАССОВ 181
11.1. Многократное использование функций и классов 181
11.2. Принципы построения библиотеки классов 182
11.3. Библиотека классов Tools.h++ 184
11.4. Стандартная библиотека шаблонов STL 185
11.4.1. Коллекции и алгоритмы 185
11.4.2. Итераторы 186
11.4.3. Моделирование концепций 187
11.5. Стандартная библиотека языка Си++ 188
11.5.1. Классы исключительных ситуаций 189
11.5.2. Стандартные коллекции 190
11.5.3. Строки 198
11.5.4. Стандартная библиотека ввода-вывода потоков 199

12. КРАТКИЙ СПРАВОЧНИК ПО ЯЗЫКУ СИ++ 202
12.1. Лексические элементы 202
12.1.1. Алфавит 202
12.1.2. Комментарии 202
12.1.3. Идентификаторы 202
12.1.4. Константы 202
12.1.5. Ключевые слова 204
12.2. Выражения 205
12.2.1. Простейшие операнды 205
12.2.2. Порядок составления выражений 206
12.2.3. Операции new и delete 208
12.3 Программы 209
12.3.1. Функции 209
12.3.2. Операторы 210
12.3.3. Исключительные ситуации 212
12.4. Объявления 214
12.4.1. Структура объявлений 214
12.4.2. Простые типы 216
12.4.3. ложные типы 217
12.4.4. Контексты имен 219
12.4.5. Директива asm 220
12.4.6. Спецификация компоновки 220
12.5. Классы 221
12.5.1. Производные классы 222
12.5.2. Определение операций 223
12.6. Шаблоны 224
12.6.1. Специализация 225
12.7. Препроцессор 226
12.7.1. Определение макросов 227
12.7.2. Условная компиляция 228
12.7.3. Дополнительные директивы препроцессора 228

Список литературы 229