设计一个异常 Exception 抽象类,在此基础上派生一个 OutOfMemory 类响应内存不足, 一个 RangeError 类响应输入的数不在指定范围内,实现并测试这几个类。
解:
源程序:
#include <iostream.h> class Exception { public: Exception(){} virtual ~Exception(){} virtual void PrintError() = 0; }; class OutOfMemory : public Exception { public: OutOfMemory(){} ~OutOfMemory(){} virtual void PrintError(); }; void OutOfMemory::PrintError() { cout << "Out of Memory!!\n"; } class RangeError : public Exception { public: RangeError(unsigned long number){BadNum = number;} ~RangeError(){} virtual void PrintError(); virtual unsigned long GetNumber() { return BadNum; } virtual void SetNumber(unsigned long number) {BadNum = number;} private: unsigned long BadNum; }; void RangeError::PrintError() { cout << "Number out of range. You used " << GetNumber() << " !\n"; } void fn1(); unsigned int * fn2(); void fn3(unsigned int *); int main() { try { fn1(); } catch (Exception& theException) { theException.PrintError(); } return 0; } unsigned int * fn2() { unsigned int *n = new unsigned int; if (n == 0) throw OutOfMemory(); return n; } void fn1() { unsigned int *p = fn2(); fn3(p); cout << "The number is : " << *p << endl; delete p; } void fn3(unsigned int *p) { long Number; cout << "Enter an integer(0~~1000): "; cin >> Number; if (Number > 1000 || Number < 0) throw RangeError(Number); *p = Number; }
程序运行输出:
Enter an integer(0~~1000): 56
The number is : 56
Enter an integer(0~~1000): 2000
Number out of range. You used 2000 !
这道题你会答吗?花几分钟告诉大家答案吧!
扫描二维码,关注牛客网
下载牛客APP,随时随地刷题
解:
源程序:
程序运行输出:
Enter an integer(0~~1000): 56
The number is : 56
Enter an integer(0~~1000): 2000
Number out of range. You used 2000 !