|
Программирование >> Дополнительные возможности наследования
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 ; прототипы функций
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |