- •Преобразование типов указателей
- •Операторы определения адреса и обращения по адресу
- •Указатели на константы и константные указатели
- •Арифметические действия с указателями
- •Одномерные и многомерные массивы.
- •Строки символов. Основные функции для работы со строками.
- •Перечисление.
- •Структура.
- •Объединения.
- •Битовые поля.
- •Тип данных bool. Тип данных wchar_t.
- •Способы передачи параметров в подпрограммы.
- •Операторы распределения памяти.
- •Объявление typedef.
- •Оператор sizeof.
- •Передача аргументов по умолчанию.
- •Встроенные функции.
- •Определение пространства имён.
- •Оператор разрешения области видимости.
- •Объявление «using». Директива «using». Псевдонимы.
- •Механизм обработки исключений.
- •Вложенные исключения.
- •Определение класса.
- •Указатель this. Спецификаторы доступа к членам класса.
- •«Друзья» класса.
- •Конструктор класса. Список инициализации.
- •Конструктор по умолчанию.
- •Конструктор копирования.
- •Явные конструкторы.
- •Деструкторы.
- •Встроенные функции–члены класса. Статические члены класса.
- •Функции-члены класса с квалификаторами const и volatile.
- •Вложенные классы. Локальные классы.
- •Общие правила перегрузки операторов.
- •Перегрузка оператора присваивания.
- •Оператор индексирования [].
- •Перегрузка бинарных операторов.
- •Составные операторы присваивания.
- •Оператор вызова функции.
- •Операторы преобразования типов (конверторы).
- •Структура данных – стек.
- •Структура данных – очередь.
- •Деревья.
- •Наследование
- •Доступ к членам наследуемого класса
- •Конструкторы, деструкторы и наследование
- •Наследование и присваивание.
- •Виртуальные функции.
- •Полиморфизм и позднее связывание.
- •Передача аргументов по умолчанию в виртуальные функции.
- •Виртуальные деструкторы.
- •Абстрактные классы.
- •Множественное наследование.
- •Виртуальное наследование.
Объявление «using». Директива «using». Псевдонимы.
Для объявления имени из некоторого пространства имён используется using-объявление, которое может находиться в любой области видимости, включая глобальную. Синтаксис следующий:
Using имя_пространства_имён :: имя_объекта
Пример:
# include <iostream>
Void main ()
{
Using std :: cout, std :: endl;
int n = 5;
cout << n << endl;
}
Объявление using может также использоваться для вложенных пространств имён.
Директива «using».
Для объявления сразу всех имён из некоторого пространства имён используется директива «using», которая имеет следующий синтаксис:
Using namespace имя_пространства_имён;
Пример:
# include <iostream>
Using namespace std;
Void main ()
{cout << “Hello” << endl;}
Для ввода:
Int a;
Cin >>a;
Псевдонимы.
Пространствам имён можно задать псевдонимы, т.е. альтернативное имя. Синтаксис такого задания выглядит следующим образом:
Namespace псевдоним = имя_пространства_имён.
Пример:
# include <iostream>
Using namespace std;
Namespace International_Business_Machinery
{int n = 1;}
Namespace IBM = International_Business_Machinery
Void main ()
{cout << IBM :: n <<endl;}
Замечание: пространство имён может иметь несколько псевдонимов.
Механизм обработки исключений.
Синтаксические исключения(exception) представляют собой объект произвольного типа, в частности это может быть обычная переменная. Обработка исключений – это механизм передачи управления и исключения специальный блок, который называется обработчиком исключений. Передаваемый объект(исключение), используется для распознавания и соответственно для выполнения тех или иных действий, для обработки возникшей ситуации. Механизм обработки исключений состоит из 4 компонент:
Исключения
Инструкция throw
блок try
catch
Взаимосвязь между этими компонентами представлена следующей схемой:
Try // блок try
{…// произвольные инструкции
Throw выражение….//выброс исключений
…// произвольные инструкции
}
Catch(тип исключения) // блок catch
{ … // обработка исключений
}
Инструкция Throw выражение осуществляет выброс исключения, т.е. передает исключения в блок Catch. Передаваемый объект является результатом вычисления выражения. Блок Try содержит код, который может выбросить исключения. Блок Catch описывает обработчик исключения и должен следовать непосредственно за блоком Try. Допускается использование несколько последовательно расположенных блоков Сatch. Если внутри блока Try произошел выброс исключения то управление передается первому обработчику исключения, тип которого соответствует типу выброшенного исключения. Если такого обработчика нет, то выполнение программы завершается. После обработки исключения управление передается на первую инструкцию, которая следует за последним обработчиком исключений.
Иногда, для того чтобы определить и обозначить исключения можно использовать пустые структуры.
Следует иметь в виду, что при поиске нужного обработчика исключений преобразование типов не производиться, т.е. необходимо указывать обработчик с типом в точности соответствующем типом выброшенного исключения.
Замечание1. Если будет отсутствовать обработчик «Int» то программа завершалась бы аварийно.
Замечание2. Для выхода из блоков Try и catch можно использовать инструкции передачи управления return и go to. Запрещается передача управления внутрь блоков Try и catch.
Замечание3. Для перехвата исключения любого типа используется следующий обработчик исключения: catch(…)
{
Инструкции
}
данный обработчик должен быть последним в последовательности обработчиков исключений, поскольку иначе он будет перехватывать даже те исключения, обработчики для которых имеются в программе но расположены за этим универсальным обработчиком.