修改例9-3的Array类模板,在执行“[]”运算符时,若输入的索引i在有效范围之外,抛出out_of_range异常。 编写主函数测试Array类模板: 主函数参考如下: int main() { Array<int> a(10); try { a[10]=5; cout<<a[10]<<endl; } catch(out_of_range& e) { cout<<e.what()<<endl; } } 【输入形式】 无 【输出形式】 程序的输出结果: Exception:out of range! 【样例输入】 【样例输出】 【样例说明】 【评分标准】请你写出这个问题的代码
时间: 2024-03-10 12:47:05 浏览: 274
代码如下:
```c++
#include <iostream>
#include <stdexcept>
using namespace std;
template <typename T>
class Array
{
private:
T* data;
int size;
public:
Array(int s = 0):size(s)
{
data = new T[size];
}
~Array()
{
if(data)
delete[] data;
}
T& operator[](int i)
{
if(i >= size || i < 0)
throw out_of_range("Exception: out of range!");
return data[i];
}
};
int main()
{
Array<int> a(10);
try
{
a[10]=5;
cout<<a[10]<<endl;
}
catch(out_of_range& e)
{
cout<<e.what()<<endl;
}
return 0;
}
```
运行结果为:
```
Exception: out of range!
```
说明程序正常执行,能够捕获到out_of_range异常。
阅读全文