- •Ссылки. Перегрузки функций.
- •Ооп: базовые принципы.
- •Классы. Низкоуровневое устройство.
- •Классы. Контроль доступа к полям. Статические поля.
- •Классы. Наследование.
- •Классы. Виртуальные методы.
- •Классы. Инициализация и уничтожение.
- •Исключения.
- •Шаблоны.
- •Стандартная библиотека, общие сведения.
- •Стандартная библиотека: контейнеры.
Классы. Низкоуровневое устройство.
Класс является абстрактным типом данных, определяемым пользователем. Данные класса – поля, функции – методы.
class <имя>{
[private:]
<описание скрытых элементов>
public:
<описание доступных элементов>
};
Поля класса:
Могут иметь любой тип, кроме типа этого же класса (но могут быть указателями или ссылками на этот класс).
Могут быть описаны с модификатором const, при этом они инициализируются только один раз с помощью конструктора.
Могут быть описаны с модификатором static.
Конструктор предназначен для инициализации объекта и вызывается автоматически при его создании.
Конструктор не возвращает значения, на него нельзя получить указатель.
Класс может иметь несколько конструкторов.
Конструкторы не наследуются.
имя_класса имя_объекта (список параметров)
Классы. Контроль доступа к полям. Статические поля.
private – элементы видимы только внутри класса. Этот вид доступа принят в классе по умолчанию.
public – открытый доступ, используется для описания интерфейса класса.
static – поля и методы можно рассматривать как глобальные переменные, доступные только в пределах области класса. Статические поля применяются для хранения данных, общих для всех объектов класса, например количества объектов или ссылки на разделяемый всеми объектами ресурс. Память на статические поля выделяется один раз и не учитывается при определении размера при помощи sizeof.Статические методы предназначены для обращения к статическим полям класса. Обращение к статическим методам производится так же, как к другим статическим полям – либо через имя класса, либо через имя объекта.
Классы. Наследование.
Механизм наследования позволяет строить иерархии, в которых производные классы получают элементы родительских, или базовых классов и могут дополнять или изменять их свойства.
class имя: [private | public | protected] базовый класс {тело класса};
Если базовых классов несколько, они перечисляются через запятую. Ключ доступа может стоять перед каждым классом. По умолчанию используется private.
Если базовый класс наследуется с ключом private, можно выборочно сделать некоторые его элементы доступными в производном классе.
Простое наследование – производный класс имеет одного родителя. Конструкторы и операции присваивания в производном классе не наследуются, а деструкторы наследуются.
Множественное наследование означает, что класс имеет несколько базовых классов.
Классы. Виртуальные методы.
Для определения виртуального метода используется идентификатор virtual. Виртуальным называется метод, ссылка на который разрешается на этапе выполнения программы.
Виртуальные методы наследуются. Служебное слово virtual (виртуальная) показывает, что функция может иметь разные версии в разных производных классах, а выбор нужной версии при вызове - это задача транслятора. Тип функции указывается в базовом классе и не может быть переопределен в производном классе. Определение виртуальной функции должно даваться для того класса, в котором она была впервые
описана.
Чисто виртуальный метод содержит признак =0 вместо тела.
