📄 ex10_3.cpp
字号:
#include<stdexcept>
#include<string>
#include<iostream.h>
#include<iomanip.h>
using namespace std;
const DefaultArraySize=10;//类型缺省为整型
template<typename elemType>class Array{
public:
explicit Array(int sz=DefaultArraySize){
size=sz;
ia=new elemType [size];
}
~ Array(){delete [] ia;}
elemType & operator[](int ix) const{//对下标运算符[ ]重载
if(ix<0||ix>=size){//增加异常抛出,防止索引值越界
string eObj="out_of_range error in Array< elemType >::operator[]()";
throw out_of_range(eObj);
}
return ia[ix];//保留原来[ ]的所有索引方式
}
private:
int size;
elemType * ia;
};
int main(){
int i;
Array<int> arr;
try{
for(i=0;i<=DefaultArraySize;i++){
arr[i]=i+1;//写入ia[10]时出界
cout<<setw(5)<<arr[i];
}
cout<<endl;
}
catch(const out_of_range & excp){
cerr<<'\n'<<excp.what()<<'\n'; //打印"out_of_range error in Array<elemType>::operator[]()"
return -1;
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -