ex10_3.cpp
来自「C++程序设计课本源码,供学习计算机的大学生们参考」· C++ 代码 · 共 43 行
CPP
43 行
#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 + =
减小字号Ctrl + -
显示快捷键?