
- •Преобразование типов указателей
- •Операторы определения адреса и обращения по адресу
- •Указатели на константы и константные указатели
- •Арифметические действия с указателями
- •Одномерные и многомерные массивы.
- •Строки символов. Основные функции для работы со строками.
- •Перечисление.
- •Структура.
- •Объединения.
- •Битовые поля.
- •Тип данных bool. Тип данных wchar_t.
- •Способы передачи параметров в подпрограммы.
- •Операторы распределения памяти.
- •Объявление typedef.
- •Оператор sizeof.
- •Передача аргументов по умолчанию.
- •Встроенные функции.
- •Определение пространства имён.
- •Оператор разрешения области видимости.
- •Объявление «using». Директива «using». Псевдонимы.
- •Механизм обработки исключений.
- •Вложенные исключения.
- •Определение класса.
- •Указатель this. Спецификаторы доступа к членам класса.
- •«Друзья» класса.
- •Конструктор класса. Список инициализации.
- •Конструктор по умолчанию.
- •Конструктор копирования.
- •Явные конструкторы.
- •Деструкторы.
- •Встроенные функции–члены класса. Статические члены класса.
- •Функции-члены класса с квалификаторами const и volatile.
- •Вложенные классы. Локальные классы.
- •Общие правила перегрузки операторов.
- •Перегрузка оператора присваивания.
- •Оператор индексирования [].
- •Перегрузка бинарных операторов.
- •Составные операторы присваивания.
- •Оператор вызова функции.
- •Операторы преобразования типов (конверторы).
- •Структура данных – стек.
- •Структура данных – очередь.
- •Деревья.
- •Наследование
- •Доступ к членам наследуемого класса
- •Конструкторы, деструкторы и наследование
- •Наследование и присваивание.
- •Виртуальные функции.
- •Полиморфизм и позднее связывание.
- •Передача аргументов по умолчанию в виртуальные функции.
- •Виртуальные деструкторы.
- •Абстрактные классы.
- •Множественное наследование.
- •Виртуальное наследование.
Указатель this. Спецификаторы доступа к членам класса.
По умолчанию функции класса имеют доступ к указателю с именем this, который указывает на объект, для которого эта функция вызвана. Можно сказать, что указатель this является неявным параметром каждой функции класса. В принципе, к любому члену класса, принадлежащему текущему объекту можно обратиться через этот указатель. Этот указатель используется в основном, для возврата указателя или ссылки на объект, к которому применяется функция класса.
Для ограничения доступа к членам класса вне его области видимости используются следующие спецификаторы доступа:
private;
public;
protected;
Эти спецификаторы могут использоваться внутри класса произвольное число раз и в любом порядке. Все члены класса объявленные после метки private и расположенные до следующей метки доступны только внутри класса. Все члены класса, объявленные после метки public и расположенные до следующей метки, доступны как в классе, так и вне класса. Как правило, функции класса, составляющие его интерфейс, располагаются после метки public. Метка protected используется при наследовании классов и разрешает доступ к элементам класса только его наследникам.
По умолчанию все члены класса, объявленные после ключевого слова класс до первой метки, имеют спецификацию доступа private. Все члены класса, объявленные после слов struct или union имеют спецификацию доступа public.
Подход к проектированию структуры класса, когда пользователь имеет доступ к атрибутам класса только через методы этого класса (интерфейс), называется инкапсуляцией.
«Друзья» класса.
Функции, не входящие в класс, а поэтому не имеющие доступа к элементам класса, можно разрешить такой доступ, объявив их «друзьями» класса (дружественными функциями). Смысл подобного разрешения заключается в том, что прямой доступ к атрибутам класса будет работать быстрее, чем доступ к этим же атрибутам через функции членов класса.
Отметим, что наличие дружественных функций нарушает принцип инкапсуляции и может привести к нежелательному изменению объекта класса. Объявление дружественной функции начинается с ключевого слова friend и может встречаться только внутри определения класса. Друзьями класса могут быть объявлены как обычные функции из некоторого пространства имён, так и функции-члены другого класса. Другом класса может быть объявлен целый другой класс. В этом случае доступ к закрытым членам класса допускается для всех функций этого друга-класса. При использовании друзей класса следует учитывать следующие правила:
отношение дружбы не является симметричным, т.е., если A – друг класса B, то из этого не следует, что класс B есть друг класса А;
отношение дружбы не является транзитивным, т.е., если класс А есть друг класса В, а класс В является другом класса С, то из этого не следует, что класс является другом класса С;
отношение дружбы не наследуется, т.е., если класс А является другом класса С и предком класса В, то из этого не следует, что класс В является другом класса С.
Бесконечный цикл для структур:
While true
{printf (“Enter number”);
Printf (“1 – sozdanie struct”);
Printf (“2 – poisk svedenij”);
Printf (“3 – …”);
Printf (“7– exit”);
Scanf (“%d”, n);
Switch (n)
1: имя функции; break;
2: имя функции; break;
3: имя функции; break;
7: exit;
}