- •1) Структурные типы данных и переменные этих типов .-
- •2) Передача структурных переменных функциям .-
- •3)Указатели на структурные переменные .
- •4) Массивы структурных переменных .
- •6)Поля битов. Средство typedef-
- •7) Понятие макроподстановки .
- •8) Включение файлов .
- •9)Условная компиляция.
- •12)Обработка двоичных файлов . Последовательный и произвольный доступ.
- •2)Произвольный доступ.
- •13)Аргументы используемые по умолчанию .-
- •14)Использование ссылок .
- •15)Встроенные функции.-
- •16)Операция разрешения видимости .(::)
- •17)Пространства имен.
- •18)Перегруженные функции.-
- •20)Определение классов.
- •21)Элементы класса.
- •22) Способы доступа к элементам класса .
- •23) Конструктор и деструктор.
- •24) Конструктор копии . Операция присваивания.-
- •25) Преобразование объектов класса в другие типы и их получение из других типов .
- •26)Перегрузка операций .
- •27)Дружественные функции.
- •28)Наследование классов .
- •29)Обработка исключительных ситуаций .
- •30)Визуалка.
27)Дружественные функции.
Специальные спецификаторы доступа класса позволяют указывать : могут ли функции вне определенного класса обращаться к его элементам . Может возникнуть ситуация , когда потребуется обеспечить определенной функции или классу доступ к элементам данного класса , определенного как private или protected . Для обеспечения доступа используется ключевое слово friend , строка начинается с этого ключевого слова встроенного в качестве оператора описания в определении данного класса . Объявить другом можно другой класс целиком , функцию член другого класса или функцию , не являющуюся членом класса .
ПРИМЕРЫ !
28)Наследование классов .
29)Обработка исключительных ситуаций .
Если возникает исключительная ситуация , то начинает работать другой кусок программы , для этого надо выделить операторы в логический блок с помощью { } , а перед этим указать try , а после проверяемого надо указать catch .
Catch (const название ситуации &).
Catch (const Econvert Error&)
Если catch (…) , то как только возникла любая исключительная ситуация , управление передается в catch.
Void main ()
{float a,b,c;
Scanf (“%f %f”,&a,&b);
Try {c=a/b}
Printf (“c=%f”,c);
Catch (…)
{printf (“деление на ноль \n”);}}
Порядок действий :
1)в блок TRY заключить операторы в программе , которые по мнению программиста могут привести к исключительной ситуации.
2)Если 1 из операторов вызывает исключение , то аварийного завершения не происходит , а начинают выполняться операторы в catch.
3)После завершения обработки исключения , программа продолжит работу после конструкции try catch .
4)Если все операторы в блоке try выполнены и исключений нет , операторы catch не выполнены .
Try {…}
Catch (const EOver Flow &)
{printf (“большое число\n”);}
Catch (const Econvert Error&)
{printf (“не число”);}
Обработка завершения :
Try {операторы вызова исключения}
Finally {операторы выполнения исключений}
Отличие конструкции заключается в том , что операторы внутри блока finally будут выполняться всегда , не зависимо , от того , возникло исключение try или нет .
Последовательность :
1)Если в try возникло исключение , то после выполнения операторов в блоке finally программа аварийно закроется .
2)Если в try не возникло исключений , то после выполнения блока finally программа завершит работу .
FILE *f
Try {f=open (“file.txt”,”w”);}
Finally {fclose(t);}
Данная конструкция не подавляет исключений , поэтому если требуется продолжить выполнение программы после возникновения исключения, необходимо поместить конструкцию в блок try , внешнего конструктора try catch .
30)Визуалка.