- •Часть 1:
- •Имена, их области существования и видимости.
- •Объявления и определения.
- •Атрибуты компоновки имен.
- •Использование имен на различных стадиях создания программ.(спросить)
- •Объекты, их типы и классы памяти.
- •Имена типов данных. (спросить)
- •Встроенные и составные типы данных. Квалификатор const.
- •Рекурсивный вызов функций. Тип «указатель на функцию» (спросить). 82
- •Перегрузка функций.
- •Шаблоны функций.
- •Часть 2:
- •Процедурное и объектно-ориентированное программирование.
- •Понятие класса.
- •Работа с this.
- •Конструкторы и деструкторы, их вызов.
- •Уровни доступа. Использование дружественных классов.
- •Перегрузка операций.
- •Абстрактные базовые классы.
- •Шаблоны классов.
- •Часть 3:
- •Множественное наследование.
- •Явные преобразования static_cast, dynamic_cast.
- •Обработка исключительных ситуаций.
Встроенные и составные типы данных. Квалификатор const.
Все типы языка C++ можно разделить на основные и составные. В языке C++ определено шесть основных типов данных для представления целых, вещественных, символьных и логических величин. На основе этих типов программист может вводить описание составных типов. К ним относятся массивы, перечисления, функции, структуры, ссылки, указатели, объединения и классы.
С помощью комбинаций звездочек, круглых и квадратных скобок можно описывать составные типы и указатели на составные типы, например, в операторе
1nt *(*р[10])();
объявляется массив из 10 указателей на функции без параметров, возвращающих указатели на int.
Основные {стандартные) типы данных часто называют арифметическими, поскольку
их можно использовать в арифметических операциях. Для описания основных
типов определены следующие ключевые слова:
• int (целый);
• char (символьный);
• wchar^t (расширенный символьный);
• bool (логический);
• float (вещественный);
• double (вещественный с двойной точностью).
Первые четыре тина называют целочисленными {целыми), последние два — типами
с плавающей точкой. Код, который формирует компилятор для обработки
целых величин, отличается от кода для величин с плавающей точкой.
Существует четыре спецификатора типа, уточняющих внутреннее представление
и диапазон значений стандартных типов:
• short (короткий);
• long (длинный);
• signed (знаковый);
• unsigned (беззнаковый).
Таблица 1 - Основные типы
Тип bool signed char unsigned char signed short int unsigned short int signed long int unsigned long int float double long double
|
Диапазон значений true и false -128 ... 127 0 ... 255 -32 768 ... 32 767 0 ... 65 535 -2 147 483 648 ... 2 147 483 647 0 ... 4 294 967 295 3.4e-38 ... 3.4e+38 1.7e-308 ... 1.7C+308 3.4e-4932 ... 3.4e+4932
|
Размер (байт) 1 1 1 2 2 4 4 4 8 10 |
Функции языка C++, их отличия от функций языка C.
Функция — это именованная последовательность описаний и операторов, выполняющая
какое-либо законченное действие. Функция может принимать параметры
и возвращать значение.
Рекурсивный вызов функций. Тип «указатель на функцию» (спросить). 82
Рекурсивной называется функция, которая вызывает саму себя. Такая рекурсия называется прямой. Существует еще косвенная рекурсия, когда две или более функций вызывают друг друга. Если функция вызывает себя, в стеке создается копия значений ее параметров, как и при вызове обычной функции, после чего управление передается первому исполняемому оператору функции. При повторном вызове этот процесс повторяется. При завершении функции соответствующая часть стека освобождается, и управление передается вызывающей функции, выполнение которой продолжается с точки, следующей за рекурсивным вызовом.
Классическим примером рекурсивной функции является вычисление факториала (это не означает, что факториал следует вычислять именно так). Для того чтобы получить значение факториала числа n, требуется умножить на n факториал числа (п-1). Известно также, что 0!=1 и 1!=1.
long fact(long n){
i f (n==0 11 n==l) return 1;
return (n * fact(n - D);
}
To же самое можно записать короче:
long fact(long n){
return (n>l) ? n * fact(n - 1) : 1;
}
Рекурсивные функции чаще всего применяют для компактной реализации рекурсивных алгоритмов, а также для работы со структурами данных, описанными рекурсивно, например, с двоичными деревьями (с. 122). Любую рекурсивную функцию можно реализовать без применения рекурсии, для этого программист должен обеспечить хранение всех необходимых данных самостоятельно. Достоинством рекурсии является компактная запись, а недостатками — расход времени и памяти на повторные вызовы функции и передачу ей копий параметров, и, главное, опасность переполнения стека.
Ссылочные переменные.
Передача параметров в функцию.
Аргументы, принимаемые по умолчанию.