C++: руководство для начинающих [2 ed.] 9785845908407, 0072232153

В этой книге описаны основные средства языка С++, которые необходимо освоить начинающему программисту. После рассмотрени

293 91 10MB

Russian Pages 672 [667] Year 2005

Report DMCA / Copyright

DOWNLOAD FILE

C++: руководство для начинающих [2 ed.]
 9785845908407, 0072232153

Table of contents :
Обложка 1
Обложка 2
Титульный
Аннотация
Содержание
Выходные данные
Об авторе
Введение
Как организована эта книга
Практические навыки
Тест для самоконтроля
Вопросы для текущего контроля
Спросим у опытного программиста
Учебные проекты
Никакого предыдущего опыта в области программирования не требуется 18 Требуемое программное обеспечение
Программный код — из Web-пространства
Для дальнейшего изучения программирования
Модуль 1. Основы С++
1.1. Из истории создания С++
Язык С: начало эры современного программирования
Предпосылки возникновения языка С++
Рождение С++
Эволюция С++
1.2. Связь С++ с языками java и C
1.3. Объектно-ориентированное программирование
Инкапсуляция
Полиморфизм
Наследование
1.4. Создание, компиляция и выполнение С++-программ
Ввод текста программы
Компилирование программы
Выполнение программы
Построчный “разбор полетов” первого примера программы
Обработка синтаксических ошибок
1.5.Использование переменных
1.6.Использование операторов
1.7. Считывание данных с клавиатуры
Вариации на тему вывода данных
Познакомимся еще с одним типом данных
1.8. Использование инструкций управления if и for
Инструкция if
Цикл for
1.9. Использование блоков кода
Точки с запятой и расположение инструкций
Практика отступов
1.10. Понятие о функциях
Библиотеки С++
1.12. Ключевые слова С++
1.13. Идентификаторы
Модуль 2. Типы данных и операторы
Почему типы данных столь важны
2.1. Типы данных С++
Целочисленный тип
Символы
Типы данных с плавающей точкой
Тип данных bool
Тип void
2.2. Литералы
Шестнадцатеричные и восьмеричные литералы
Строковые литералы
Управляющие символьные последовательности
2.3. Создание инициализированных переменных
Инициализация переменной
Динамическая инициализация переменных
Операторы
2.4. Арифметические операторы
Инкремент и декремент
2.5. Операторы отношений и логические операторы
2.6. Оператор присваивания
2.7. Составные операторы присваивания
2.8. Преобразование типов в операторах присваивания
Выражения
2.9. Преобразование типов в выражениях
Преобразования, связанные с типом bool
2.10. Приведение типов
2.11. Использование пробелов и круглых скобок
Модуль 3. Инструкции управления
3.1. Инструкция if
Условное выражение
Вложенные if-инструкции
“Лестничная” конструкция if-else-if
3.2. Инструкция switch
Вложенные инструкции switch
3.3. Цикл for
Вариации на тему цикла for
Отсутствие элементов в определении цикла
Бесконечный цикл for
Циклы без тела
Объявление управляющей переменной цикла в заголовке инструкции for
3.4. Цикл while
3.6. Использование инструкции break для выхода из цикла
3.7. Использование инструкции continue
3.8.Вложенныециклы
3.9. Инструкция goto
Модуль 4. Массивы, строки и указатели
4.1. Одномерные массивы
На границах массивов без пограничников
4.2. Двумерные массивы
4.3. Многомерные массивы
4.4. Строки
Основы представления строк
Считывание строк с клавиатуры
4.5. Некоторые библиотечные функции обработки строк
Функция strcpy()
Функция strcat()
Функция strcmp()
Функция strlen()
Пример использования строковых функций
Использование признака завершения строки 17
4.6. Инициализация массивов
Инициализация “безразмерных” массивов
4.7. Массивы строк
4.8. Указатели
Что представляют собой указатели
4.9. Операторы, используемые с указателями
О важности базового типа указателя
Присваивание значений с помощью указателей
4.10. Использование указателей в выражениях
Арифметические операции над указателями
Сравнение указателей
4.11. Указатели и массивы
Индексирование указателя
Строковые константы
Массивы указателей
Соглашение о нулевых указателях
4.12. Многоуровневая непрямая адресация
Модуль 5. Введение в функции
Основы использования функций
5.1. Общий формат С++-функций
5.2. Создание функции
5.3. Использование аргументов
5.4. Использование инструкции return
Возврат значений
5.5. Использование функций в выражениях
Правила действия областей видимости функций
5.6. Локальная область видимости
5.7. Глобальная область видимости
5.8. Передача указателей и массивов в качестве аргументов функций
Передача функции указателя
Передача функции массива
Передача функциям строк
5.9. Возвращение функциями указателей
Функция main()
5.10. Передача аргументов командной строки функции main()
Передача числовых аргументов командной строки
5.11. Прототипы функций
Стандартные заголовки содержат прототипы функций
5.12. Рекурсия
Модуль 6.0 функциях подробнее
6.1. Два способа передачи аргументов
6.2. Как в С++ реализована передача аргументов
6.3. Использование указателя для обеспечения вызова по ссылке
6.4. Ссылочные параметры
6.5. Возврат ссылок
6.6. Независимые ссылки
Ограничения при использовании ссылок
6.7. Перегрузка функций
Автоматическое преобразование типов и перегрузка
6.8. Аргументы, передаваемые функции по умолчанию
Сравнение возможности передачи аргументов по умолчанию с перегрузкой функций
Об использовании аргументов, передаваемых по умолчанию
6.9. Перегрузка функций и неоднозначность
Модуль 7
Еще о типах данных и операторах
7.1. Спецификаторы типа const и volatile
Спецификатор типа const
Спецификатор типа volatile
Спецификаторы классов памяти
Спецификатор класса памяти auto
7.2. Спецификатор класса памяти extern
7.3. Статические переменные
7.4. Регистровые переменные
7.5. Перечисления
7.6. Ключевое слово typedef
7.7. Поразрядные операторы
Поразрядные операторы И, ИЛИ, исключающее ИЛИ и НЕ
7.8. Операторы сдвига
7.9. Оператор “знак вопроса”
7.10. Оператор “запятая”
7.11. Составные операторы присваивания
7.12. Использование ключевого слова sizeof
Сводная таблица приоритетов С++-операторов
Модуль 8. Классы и объекты
8.1. Общий формат объявления класса
8.2. Определение класса и создание объектов
8.3. Добавление в класс функций-членов
8.4. Конструкторы и деструкторы
8.5. Параметризованные конструкторы
Добавление конструктора в класс Vehicle
Альтернативный вариант инициализации объекта
8.6. Встраиваемые функции
Создание встраиваемых функций в объявлении класса
8.7. Массивы объектов
8.8. Инициализация массивов объектов
8.9. Указатели на объекты
Модуль 9.0 классах подробнее
9.1. Перегрузка конструкторов
9.2. Присваивание объектов
9.3. Передача объектов функциям
Конструкторы, деструкторы и передача объектов
Передача объектов по ссылке
Потенциальные проблемы при передаче параметров
9.4. Возвращение объектов функциями
9.5. Создание и использование конструктора копии
9.6. Функции-“друзья”
9.7. Структуры и объединения
Структуры
Объединения
9.8. Ключевое слово this
9.9. Перегрузка операторов
9.10. Перегрузка операторов с использованием функций-членов
О значении порядка операндов
Использование функций-членов для перегрузки унарных операторов
9.11. Перегрузка операторов с использованием функций-не членов класса
Использование функций-“друзей” для перегрузки унарных операторов
Советы по реализации перегрузки операторов
Модуль 10. Наследование
10.1. Понятие о наследовании
Доступ к членам класса и наследование
10.2. Управление доступом к членам базового класса
10.3. Использование защищенных членов
10.4. Вызов конструкторов базового класса
10.5. Создание многоуровневой иерархии
10.6. Наследование нескольких базовых классов
10.7. Когда выполняются функции конструкторов и деструкторов
10.8. Указатели на производные типы
Ссылки на производные типы
10.9. Виртуальные функции и полиморфизм
Понятие о виртуальной функции
Наследование виртуальных функций
Зачем нужны виртуальные функции
Применение виртуальных функций
10.10. Чисто виртуальные функции и абстрактные классы
Модуль 11. С++-система ввода-вывода
Сравнение старой и новой С++-систем ввода-вывода
11.1. Потоки С++
Встроенные С++-потоки
11.2. Классы потоков
11.3. Перегрузка операторов ввода-вывода
Создание перегруженных операторов вывода
Использование функций-“друзей” для перегрузки операторов вывода
Перегрузка операторов ввода
Форматированный ввод-вывод данных
11.4. Форматирование данных с использованием функций-членов класса ios
11.5. Использование манипуляторов ввода-вывода
11.6. Создание собственных манипуляторных функций
Файловый ввод-вывод данных
11.7. Как открыть и закрыть файл
11.8. Чтение и запись текстовых файлов
11.9. Неформатированный ввод-вывод данных в двоичном режиме
Считывание и запись в файл блоков данных
11.10. Использование других функций ввода-вывода
Версии функции get()
Функция getline()
Функция обнаружения конца файла
Функции peek() и putback()
Функция flush()
11.11. Произвольный доступ
11.12. Получение информации об операциях ввода-вывода
Модуль 12. Исключения, шаблоны и кое-что еще
12.1. Обработка исключительных ситуаций
Основы обработки исключительных ситуаций
Использование нескольких catch-инструкций
Перехват всех исключений
Определение исключений, генерируемых функциями
Повторное генерирование исключения
Шаблоны
12.2. Обобщенные функции
Функция с двумя обобщенными типами
Явно заданная перегрузка обобщенной функции
12.3. Обобщенные классы
Явно задаваемые специализации классов
12.4. Динамическое распределение памяти
Инициализация динамически выделенной памяти
Выделение памяти для массивов
Выделение памяти для объектов
12.5. Пространства имен
Понятие пространства имен
Инструкция using
Неименованные пространства имен
Пространство имен std
12.6. Статические члены класса
Статические члены данных класса
Статические функции-члены класса
12.7. Динамическая идентификация типов (RTTI)
12.8. Операторы приведения типов
Оператор dynamic_cast
Оператор const_cast
Оператор static_cast
Оператор reinterpret_cast
Приложение А. Препроцессор
Директива #define
Макроопределения, действующие как функции
Директива #error
Директива #include
Директивы условной компиляции
Директивы #if, #else, #elif и #endif
Директивы #ifdef и #ifndef
Директива #undef
Использование оператора defined
Директива #line
Директива #pragma
Операторы препроцессора “#” и “##”
Зарезервированные макроимена
Приложение Б. Использование устаревшего С++-компилятора
Два простых изменения
Предметный указатель

Polecaj historie