Ex10_3.cpp
上传用户:wuzhousb
上传日期:2022-07-12
资源大小:380k
文件大小:1k
源码类别:

书籍源码

开发平台:

Visual C++

  1. #include<stdexcept>
  2. #include<string>
  3. #include<iostream>
  4. #include<iomanip>
  5. using namespace std;
  6. const DefaultArraySize=10;//类型缺省为整型
  7. template<typename elemType>class Array{
  8. public:
  9. explicit Array(int sz=DefaultArraySize){
  10. size=sz;
  11. ia=new elemType [size];
  12. }
  13. ~ Array(){delete [] ia;}
  14. elemType & operator[](int ix) const{//对下标运算符[ ]重载
  15. if(ix<0||ix>=size){//增加异常抛出,防止索引值越界
  16. string eObj="out_of_range error in Array< elemType >::operator[]()";
  17. throw out_of_range(eObj);
  18. }
  19. return  ia[ix];//保留原来[ ]的所有索引方式
  20. }
  21. private:
  22. int  size;
  23. elemType * ia;
  24. };
  25. int main(){
  26. int i;
  27. Array<int> arr;
  28. try{
  29. for(i=0;i<=DefaultArraySize;i++){
  30. arr[i]=i+1;//写入ia[10]时出界
  31. cout<<setw(5)<<arr[i];
  32. }
  33. cout<<endl;
  34. }
  35. catch(const out_of_range & excp){
  36. cerr<<'n'<<excp.what()<<'n'; //打印"out_of_range error in Array<elemType>::operator[]()"
  37. return -1;
  38. }
  39. return 0;
  40. }