Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
программирование).docx
Скачиваний:
32
Добавлен:
28.10.2018
Размер:
52.68 Кб
Скачать

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)Визуалка.