- •Предисловие
- •Глава 1. Основные понятия
- •1.1. Элементы языка программирования
- •1.2. Процесс создания программы
- •1.3. Первая программа
- •1.4. Состав программы
- •Глава 2. Средства разработки на C++
- •2.1. Системы Turbo C++ 3.0/Borland C++ 3.1
- •2.2. Система C++ Builder
- •Глава 3. Работа с числовыми данными
- •3.1. Целые типы
- •3.2. Числа с плавающей точкой
- •3.3. Ввод и вывод чисел
- •3.4. Логический тип и логические операции
- •3.5. Математические функции
- •Глава 4. Операторы. Ключевые слова
- •4.1. Операторы
- •4.2. Приоритеты операторов
- •4.3. Ключевые слова
- •4.4. Структура программы
- •4.5. Константы
- •Задачи - . Простейшие вычисления
- •Глава 5. Управление и циклы
- •5.1. Условный оператор
- •5.2. Операторы цикла
- •5.3. Переключатель
- •5.4. Операторы break и continue
- •Задачи -. Выбор и циклы
- •Глава 6. Массивы
- •6.1. Одномерные массивы
- •6.2. Двумерные массивы
- •Задачи -. Одно- и двумерные массивы
- •Глава 7. Функции
- •7.1. Определение функции
- •7.2. Формальные параметры и фактические аргументы
- •7.3. Автоматические и статические переменные
- •7.4. Прототипы функций
- •7.5. Массивы как аргументы функций
- •7.6. Внешние переменные
- •7.7. Рекурсия
- •7.8. Перегруженные имена функций
- •7.9. Аргументы функций по умолчанию
- •Задачи -. Функции
- •Глава 8. Символы и строки
- •8.1. Символы
- •8.2. Строки символов
- •Задачи -. Символы и строки
- •Глава 9. Препроцессор
- •9.1. Директивы препроцессора
- •9.2. Макросы
- •Задачи -. Макросы
- •Глава 10. Указатели и ссылки
- •10.1. Указатели и адреса
- •10.2. Указатели и массивы
- •10.3. Адресная арифметика
- •10.4. Символьные указатели
- •10.5. Массивы указателей
- •10.6. Указатели на функции
- •10.7. Ссылки
- •10.8. Операторы new и delete
- •Задачи -. Указатели и ссылки
- •Глава 11. О файлах и командной строке
- •11.1. Знакомство с файлами
- •11.2. Командная строка
- •11.3. Перенаправление стандартного ввода и вывода на файл
- •11.4. Аргументы командной строки
- •Задачи -. Файлы и командная строка
- •Глава 12. Работа с экраном дисплея
- •12.1. Текстовый режим
- •12.2. Графический режим
- •Задачи -. Работа с экраном
- •Глава 13. Внутреннее представление чисел
- •13.1. Двоичная система счисления
- •13.2. Беззнаковые целые
- •13.3. Двоичный дополнительный код
- •13.4. Двоичный код с избытком
- •13.5. Побитовые операторы
- •13.6. Дробные числа в двоичной системе
- •13.7. Внутреннее представление плавающих типов
- •13.8. Преобразование типов
- •Задачи -. Побитовые операторы
- •Глава 14. Структуры, перечисления, объединения
- •14.1. Объявление структур
- •14.2. Структуры и функции
- •14.3. Указатели на структуры
- •14.4. Массивы структур
- •14.5. Перечисления
- •14.6. Объединения
- •14.7. Битовые поля
- •14.8. О бинарных файлах
- •Задачи -. Структуры
- •Глава 15. Классы
- •15.1. Структуры в C++. Инкапсуляция
- •15.2. Встроенные функции
- •15.3. Классы. Скрытие данных
- •15.4. Конструкторы
- •15.5. Статические члены класса
- •15.6. Друзья класса
- •15.7. Копирование объектов класса
- •15.8. Управление доступом
- •15.9. Ссылка на себя
- •15.10. Деструкторы
- •Задачи -. Работа с классами
- •Глава 16. Программы из нескольких файлов
- •16.1. Работа с проектами
- •16.2. Область действия имен
- •16.3. Заголовочные файлы
- •16.4. Пространства имен
- •Задачи -. Работа со стеком
- •Глава 17. Перегрузка операторов
- •17.1. Правила перегрузки операторов
- •Задачи -. Перегрузка операторов
- •Глава 18. Конструктор копирования и оператор присваивания
- •18.1. Проблемы при копировании
- •Задачи -. Конструктор копирования
- •Глава 19. Ввод и вывод
- •19.1. Вывод
- •19.2. Ввод
- •19.3. Ввод и вывод определяемых пользователем типов
- •19.4. Работа с файлами
- •Глава 20. Взаимоотношения классов
- •20.1. Объекты как члены класса
- •20.2. Конструкторы встроенных типов
- •20.3. Наследование
- •20.4. Виртуальные функции
- •20.5. Абстрактные классы
- •20.6. Совместимость типов
- •20.7. Множественное наследование
- •Задачи -. Наследование классов
- •Глава 21. Шаблоны, исключения
- •21.1. Шаблоны
- •21.2. Шаблоны функций
- •21.3. Классы и шаблоны
- •21.4. Обработка исключений
- •21.5. Стандартная библиотека шаблонов
- •Литература
- •Предметный указатель
56 4
в которой сложения будут выполняться слева направо по умолчанию, эквивалентна инструкции
a = ((b + c) + d) + e;
в которой порядок выполнения сложений явно указан скобками.
Операторы присваивания выполняются справа налево, поэтому инструкция
x = y = z = 10;
присвоит всем трем переменным одно значение 10.
4.3.Ключевые слова
Втабл.21 перечислены ключевые слова языка Си, которые являются
вто же время и ключевыми словами языка C++. Эти идентификаторы имеют предопределенный смысл и не могут использоваться для обозначения объектов, определяемых пользователем.
Таблица 22. Ключевые слова стандарта языка Cи
Ключевое |
Значение, использование |
||
слово |
|||
|
|
||
auto |
Устанавливает автоматический класс памяти для объектов |
||
break |
Оператор выхода из цикла или переключателя switch |
||
case |
Метка в операторе |
switch |
|
char |
Спецификатор символьного типа |
||
const |
Модификатор типа. Запрещает изменение объекта |
||
continue |
Оператор перехода к следующей итерации цикла |
||
default |
Метка в операторе |
switch |
|
do |
Первое слово цикла |
do ... while |
|
double |
Спецификатор вещественного типа двойной точности |
||
else |
Необязательная ветвь в операторе if |
||
enum |
Спецификатор перечислимого типа |
||
extern |
Класс памяти, указывающий, что идентификатор |
||
float |
определяется позже или в другом файле |
||
Спецификатор вещественного типа одинарной точности |
|||
for |
Оператор цикла |
|
|
goto |
Оператор безусловного перехода |
||
if |
Оператор выбора |
|
|
int |
Спецификатор целого типа |
||
long |
Спецификатор типа длинных целых. Используется также |
||
register |
как префикс с int, float, double |
||
Указание разместить величину в регистрах процессора |
|||
return |
Оператор возврата в вызывающую функцию |
||
short |
Спецификатор типа коротких целых |
||
signed |
Указывает на наличие знака у целочисленных типов |
Операторы. Ключевые слова 57
Продолжение таблицы 23. Ключевые слова стандарта языка Cи
Ключевое |
Значение, использование |
|
слово |
||
|
||
sizeof |
Оператор. Определяет размер операнда в байтах |
|
static |
Класс памяти статических объектов |
|
struct |
Спецификатор типа структура |
|
switch |
Оператор выбора |
|
typedef |
Используется для создания синонима типа |
|
union |
Спецификатор типа объединение |
|
unsigned |
Префикс данных целочисленного типа без знака |
|
void |
Тип выражения, не имеющего значения |
|
volatile |
Модификатор типа объектов, которые могут быть |
|
while |
прочитаны или записаны какой-либо другой программой |
|
Оператор цикла |
В язык C++ введены дополнительные ключевые слова, с помощью которых реализуется концепция объектно-ориентированного программирования, обработка исключений (ошибок) и другие возможности. В табл.24 они перечислены с краткими пояснениями.
Таблица 24. Ключевые слова стандарта языка C++
|
|
Ключевое |
Значение, использование |
слово |
|
asm |
Используется для вставки в C++ программу ассемблерного |
bool |
кода |
catch |
Спецификатор логического типа |
class |
Обрабатывает исключение, порожденное оператором throw |
const_cast |
Используется для объявления классов |
delete |
Оператор переопределения модификаторов const и/или volatile |
dynamic_cast |
Оператор освобождения памяти, на которую указывает |
explicit |
операнд |
export |
Оператор динамической проверки законности приведения |
false |
типа |
friend |
Запрещает приведение типов аргументов в конструкторах |
inline |
Разрешает использование шаблона из одного файла в |
mutable |
другом |
namespace |
Логическая константа со значением ложь |
new |
Разрешает функциям доступ к закрытым членам класса |
operator |
Требует встраивать код функции в каждую точку ее вызова |
private |
Разрешает изменять объекты, объявленные как const |
protected |
Создает пространство имен |
|
Оператор выделения динамической памяти |
|
Создает (перегружает) функции операторы |
58 4
Спецификатор доступа закрытых членов класса Спецификатор доступа закрытых членов класса, доступных в производных классах
|
Операторы. Ключевые слова 59 |
|
Продолжение таблицы 24. Ключевые слова стандарта языка C++ |
|
|
|
|
|
Ключевое |
Значение, использование |
|
слово |
|
|
public |
Спецификатор доступа открытых членов класса |
|
reinterpret_cast |
Оператор преобразования одного типа в другой |
|
restrict |
Квалификатор единственного указателя для доступа к |
|
static_cast |
объекту |
|
template |
Оператор приведения типа |
|
this |
Используется для объявления шаблонов функций и классов |
|
throw |
Указатель на объект, для которого вызвана функция член |
|
true |
класса |
|
try |
Оператор генерации исключения |
|
typeid |
Логическая константа со значением истина |
|
typename |
Заголовок блока, где контролируются исключения |
|
using |
Оператор определения типа объекта |
|
virtual |
Используется вместо class в шаблонах template |
|
wchar_t |
Открывает доступ к именам из пространства имен |
|
|
Спецификатор создания виртуальных функций |
|
|
Спецификатор типа двухбайтовых символов |
4.4. Структура программы
Программа на языке C++ состоит из функций и переменных. Среди функций любой программы должна быть функция main. Переменные хранят данные, обрабатываемые программой.
Объявления переменных
Все переменные должны быть объявлены до их использования. Переменные можно объявлять внутри какой-либо функции или вне всех функций. Переменные, объявленные внутри функции, являются локальными, они существуют и доступны только внутри данной функции. Переменные, объявленные вне функций, называются глобальными или внешними, их можно использовать внутри любой функции.
Объявление задает тип и содержит список из одной или нескольких переменных. Например,
int lower, upper, step; // Три переменных типа int char c, line[1000];
Здесь c – простая переменная типа char, line – массив из 1000 элементов типа char.
60 4
При объявлении переменная может быть инициализирована, например,
char simb = ’G’; // В апострофы заключается одиночный символ int i = 0;
float eps = 1.0e-5;
Объявления и определения
Объявление (declaration) сообщает компилятору о том, что в программе будет существовать какой-либо объект, например, переменная или функция. Инструкция
extern int k;
является только объявлением. Теперь имя целой переменной k можно использовать в выражениях. Ключевое слово extern (внешний) указывает, что память под переменную k не выделяется при ее объявлении, а будет выделена где-то в другом месте.
Определение (definition) можно рассматривать как объявление, которое влечет за собой резервирование памяти для переменной или функции. Все объявления переменных из предыдущего пункта являются также и определениями, так как компилятор зарезервирует под них память.
Когда не требуется конкретизация, вместо терминов определение и объявление можно использовать термин описание.
Инструкции и блоки
Программа на языке C++ состоит их отдельных предложений или инструкций. Как правило, каждая инструкция завершается точкой с запятой. Другое часто используемое название для инструкции – оператор, например, оператор цикла. Инструкция задает какое-то действие в программе, например, вызывает функцию, изменяет переменную.
Для объединения нескольких инструкций в одну составную инструкцию или блок используются фигурные скобки { и }. Блок с точки зрения синтаксиса воспринимается как одна инструкция.
Внутри блока можно объявлять переменные, которые существуют только внутри этого блока. Переменные внутри блоков «затеняют» переменные с такими же именами в охватывающих блоках. Например,
int k = 2; |
// Глобальная переменная |
int main() |
|
{ |
|
cout << ”k = ” << k; |
// Блок с телом функции main |