c++自定义对象支持按下标遍历

  1. #include<iostream>
  2. #include<string>
  3. using namespace std;
  4. class Array
  5. {
  6. public:
  7. Array(){length = 0; num = NULL;};
  8. Array(int n);
  9. int & operator[]( int );
  10. const int & operator[]( int )const;
  11. int getlength() const {return length;}
  12. private:
  13. int length;
  14. int * num;
  15. };
  16. Array::Array(int n)
  17. {
  18. try
  19. {
  20. num = new int[n];
  21. }
  22. catch(bad_alloc)
  23. {
  24. cerr<<"allocate storage failure!"<<endl;
  25. throw;
  26. }
  27. length = n;
  28. }
  29. int& Array::operator[](int i)
  30. {
  31. if(i < 0 || i >= length)
  32. throw string("out of bounds");
  33. return num[i];
  34. }
  35. const int & Array::operator[](int i) const
  36. {
  37. if(i < 0 || i >= length)
  38. throw string("out of bounds");
  39. return num[i];
  40. }
  41. int main()
  42. {
  43. Array A(5);
  44. int i;
  45. try
  46. {
  47. for(i = 0; i < A.getlength(); i++)
  48. A[i] = i;
  49. for(i = 0 ;i < 6; i++ )
  50. cout<< A[i] <<endl;
  51. }
  52. catch(string s)
  53. {
  54. cerr<< s <<", i = "<< i <<endl;
  55. }
  56. return 0;
  57. }
原文地址:https://www.cnblogs.com/qiumingcheng/p/15479975.html