Программирование >>  Дополнительные возможности наследования 

1 ... 256 257 258 [ 259 ] 260 261 262 ... 265


for (SchoolClass::iterator i = GrowingClass.begln(); i != GrowingClass.end();

i->SetAge(i->GetAge() +1); ShowList(GrowingClass);

return 0;

Отображаем свойства списка

template<class Т, class A>

void ShowList(const lisKT, A>& aLlst)

for (lisKT, A>: :const iterator ci = aList. begin(); ci != aList.end(); ++ci) cout ci \n ;

cout endl;

11. Измените код из упражнение 10 таким образом, чтобы для отображения данных о каждом студенте использовался объект функции.

ftinclude <algorithm>

template<class Т>

class Print

public:

void operator()(const T& t) {

cout t \n ; }

template<class T, class A>

void ShowList(const list<T, A>& aList)

Print<Student> PrintStudent; for each(aList.begin(), aList.end(), PrintStudent); cout endl;



День 20

Хатпромные вппроеы

1. Что такое исключение?

Это обьект, который создается в результате использования ключевого слова throw. Этот объект является признаком возникновения исключительной ситуации и передается в стек вызовов первого оператора catch, который выполняет обработку этого исключения.

2. Для чего нужен блок try?

Блок try - это набор выражений программы, которые могут создавать исключительные ситуации.

3. Для чего используется оператор catch?

Оператор catch содержит сигнатуру типа исключения, которое он способен обработать. Оператор catch располагается сразу за блоком try и выполняет роль приемника исключения, сгенерированного внутри блока try.

4. Какую информацию может содержать исключение?

Исключение - это объект, способный содержать любую информацию, которую можно определить внутри класса, созданного пользователем.

5. Когда создается объект исключения?

Объекты исключений создаются при вызове ключевого слова throw.

6. Следует ли передавать исключения как значения или как ссылки?

Вообще исключения нужно передавать как ссылки. Если вы не собираетесь модифицировать содержимое объекта исключения, вам следует передать ссылку, определенную с помощью ключевого слова const.

7. Будет ли оператор catch перехватывать производные исключения, если он настроен на базовый класс исключения?

Да, если исключение будет передано как ссылка.

8. Если используются два оператора catch, один из которых настроен на базовое сообщение, а второй - на производное, то в каком порядке их следует расположить?

Операторы catch проверяются в порядке их расположения в исходном коде. Причем если первый оператор catch перехватит исключение, то другие операторы catch уже вызываться не будут. Поэтому операторы catch следует располагать в порядке от специфичных (производных) к общим (базовым),

9. Что означает оператор catch( ,)?

Оператор catch(,..) будет перехвать[вать все исключения любого типа.

10. Что такое точка останова?

Это позиция в коде, в которой отладчик остановит выполнение профаммы.



1. Запишите блок try и оператор catch для отслеживания и обработки простого исключения.

ftinclude <iostream.h> class OutOfMemory {}; int mainO {

try {

int mylnt = new int; if (mylnt == 0)

throw OutOfMemoryO;

>

catch (OutOfMemory) {

cout Unable to allocate memory!\n ;

return 0; }

2. Добавьте в исключение, полученное в упражнении 1, переменную-член и метод доступа и используйте их в блоке оператора catch.

ftinclude <iostream.h> ftinclude <stdio.h> ftinclude <string,h> class OutOfMemory; {

public;

0ut0fMemory(char *);

char* GetStringO { return itsString; } private;

char* itsString;

OutOfMemory;:0ut0fMemory(char * theType) {

itsString = new char[80];

char warning[] = Out Of Memory! Cant allocate room for; ; Strncpy(itsString,warning,60); strncat(itsString,theType,19);

int mainO {



1 ... 256 257 258 [ 259 ] 260 261 262 ... 265

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика