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

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


int пуХпГ = new int; if (nylnt == 0)

throw OutOfMenoryCinf);

catch (OutOfMemory& theException) {

cout theException. GetStringO;

return 0; }

3. Унаследуйте новое исключение от исключения, полученного в упражнении 2. Измените блок оператора catch таким образом, чтобы в нем происходила обработка как производного, так и базового исключений.

2 3 4 5 6 7 8 9

10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32

ffinclude <iostream.h>

Абстрактный тип исключений

class Exception

public:

Exception(){}

virtual ExceptionOO

virtual void PrintErrorO = 0;

Производный класс для обработки проблем памяти

Обратите внимание: в этом классе не производится выделение памяти

class OutOfMemory : public Exception

public:

OutOfMemory(){}

OutOfMemory(){}

virtual void PrintErrorO; private:

void OutOfMemory;;PrintError() {

cout Нет памяти !!\n ; }

Производный класс для обработки ввода неверных чисел

class RangeError : public Exception

public;

RangeError(unsigned long number){badNumber = number;}



33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79

BangeError(){}

virtual void PrintErrorO;

virtual unsigned long GetNunber() { return badNumber; } virtual void SetNunber( unsigned long number) {badNumber = number; private:

unsigned long badNumber;

void RangeError::PrintError() {

cout Number out of range. You used GetNumber() !!\n ;

void MyFunctionO; прототип функции

int mainO {

try {

MyFunctionO;

Чтобы использовать только один оператор catch, примените для этого виртуальные функции catch (Exceptions theException) {

theException. PrintErrorO;

return 0; }

void MyFunctionO {

unsigned int mylnt = new unsigned int; long testNumber; if (mylnt == 0)

throw OutOfMemory(); cout Enter an int: ; cin testNumber;

эту проверку лучше заменить серией

проверок, чтобы выявить неверные данные, введенные пользователем if (testNumber > 3768 testNumber < 0) throw RangeError(testNumber);

♦mylnt = testNumber;

cout Ok. mylnt; *mylnt;

delete mylnt;



1 2 3 4 5 6 7 8 9

Ю 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46

Sinclude <iostream.h>

Абстрактный тип исключений

class Exception

public:;

Exception(){}

virtual Exception(){}

virtual void PrintErrorO = 0;

Производный класс для обработки проблем памяти

Обратите внимание: в этом классе не производится выделение памяти!

class OutOfMemory : public Exception

public:

OutOfMemory(){}

OutOfMemoryOO

virtual void PrintErrorO; private; };

void OutOfMemory::PrintError() {

cout Нет памяти!!\n ;

Производный класс для обработки ввода неверных чисел

class RangeError : public Exception

public:

RangeError(unsigned long number){badNumber = number;}

RangeError(){}

virtual void PrintErrorO;

virtual unsigned long GetNumber() { return badNumber; } virtual void SetNumber(unsigned long number) {badNumber = number;} private;

unsigned long badNumber;

void RangeError::PrintError() {

cout Number out of range. You used GetNumber() !!\n ;

прототипы функций



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

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