
- •Преобразование типов указателей
- •Операторы определения адреса и обращения по адресу
- •Указатели на константы и константные указатели
- •Арифметические действия с указателями
- •Одномерные и многомерные массивы.
- •Строки символов. Основные функции для работы со строками.
- •Перечисление.
- •Структура.
- •Объединения.
- •Битовые поля.
- •Тип данных bool. Тип данных wchar_t.
- •Способы передачи параметров в подпрограммы.
- •Операторы распределения памяти.
- •Объявление typedef.
- •Оператор sizeof.
- •Передача аргументов по умолчанию.
- •Встроенные функции.
- •Определение пространства имён.
- •Оператор разрешения области видимости.
- •Объявление «using». Директива «using». Псевдонимы.
- •Механизм обработки исключений.
- •Вложенные исключения.
- •Определение класса.
- •Указатель this. Спецификаторы доступа к членам класса.
- •«Друзья» класса.
- •Конструктор класса. Список инициализации.
- •Конструктор по умолчанию.
- •Конструктор копирования.
- •Явные конструкторы.
- •Деструкторы.
- •Встроенные функции–члены класса. Статические члены класса.
- •Функции-члены класса с квалификаторами const и volatile.
- •Вложенные классы. Локальные классы.
- •Общие правила перегрузки операторов.
- •Перегрузка оператора присваивания.
- •Оператор индексирования [].
- •Перегрузка бинарных операторов.
- •Составные операторы присваивания.
- •Оператор вызова функции.
- •Операторы преобразования типов (конверторы).
- •Структура данных – стек.
- •Структура данных – очередь.
- •Деревья.
- •Наследование
- •Доступ к членам наследуемого класса
- •Конструкторы, деструкторы и наследование
- •Наследование и присваивание.
- •Виртуальные функции.
- •Полиморфизм и позднее связывание.
- •Передача аргументов по умолчанию в виртуальные функции.
- •Виртуальные деструкторы.
- •Абстрактные классы.
- •Множественное наследование.
- •Виртуальное наследование.
Вложенные исключения.
Блок Try может включать в себя другие блоки try со своими обработчиками исключений. В этом случае обработчик исключений ищется последовательно от самого внутреннего блока try к самому внешнему блоку try.
В данном примере обработчик Above zero находиться внутри блока try а обработчик zero относиться к внешнему блоку try. Блок try c обработчиками исключений может быть вложен в блок catch. В этом случае подходящий обработчик исключений. Ищется только внутри блока catch, в который вложен блок try.
Замечание. Для передачи управления из обработчика исключений другому обработчику исключений, который находится выше текущего обработчика в иерархии текущего исключения, используется инструкция throw без выражения. В этом случае новые исключения не создается а выбрасывается обрабатываемое исключение.
Определение класса.
Класс является абстрактным типом данных, определяемых пользователем, и представляет собой модель реального объекта, процесса или явления. Абстрактным типом данных называется множество значений и множество операций, допустимых над этими значениями. Множество значений данных, принадлежащих классу, определяется его структурой, а множество операций, допустимых над этими значениями, определяется набором функций. Как данные, так и функции, определённые в классе, называются членами класса. Данные класса также называются его атрибутами, а функции – методами. Набор функций класса называется его интерфейсом. Простейший случай описания класса выглядит следующим образом:
Class имя_класса
{ спецификатор доступа
Описание данных
Описание методов
};
Спецификатор доступа управляет видимостью элементов класса, т.е. определяет уровень доступа к элементам класса. В общем случае синтаксический класс определяется следующим образом:
Class |struct| union имя_класса
{
// члены класса
};
При определении класса должно использоваться только одно из ключевых слов: class, struct или union. Каждое из этих ключевых слов устанавливает различные режимы доступа к членам класса. При использовании ключевого слова class доступ ко всем членам класса закрыт, а при использовании ключевых слов struct и union – открыт.
Чтобы открыть или закрыть доступ клиентов к определенным членам класса используются спецификаторы доступа, которые мы рассмотрим далее. Допускается объявлять только имя класса без его определения. Такое объявление класса называется предварительным. В этом случае можно определять только указатели или ссылки на объекты такого класса. Методы класса представляют собой обычные функции, которые могут быть или только объявлены в классе, или полностью определены в классе. Если функция определяется вне класса, то для того, чтобы показать, какому классу принадлежит эта функция, нужно перед именем функции записать имя класса и оператор разрешения области видимости. После определения класса можно объявлять переменные, которые имеют тип этого класса, или другими словами принадлежат этому классу или являются экземплярами этого класса.
В языке программирования С++ экземпляры класса называются объектами. Каждый объект содержит свой набор атрибутов класса. После создания объектов класса над ними можно выполнять методы этого класса. Для доступа к членам класса вне области видимости этого класса используются операторы точка (.) и стрелочка (). При этом стрелочка используется в том случае, если вы осуществляете доступ к элементу класса через указатель на объект класса. Т.е. все действия выполняются аналогично как над элементами структуры.