当前位置:编程学习 > C/C++ >>

C++读书笔记之 下标运算符 [] 重载 运算符重载

The subscript operator [] is normally used to access array elements. This operator can be overloaded to enhance the existing functionality of C++ arrays.

Following example explain how a subscript operator [] can be overloaded.

 

 

[cpp]
#include <iostream>  
using namespace std; 
const int SIZE = 1991; 
template <typename T> 
class safearay 

   private: 
      T arr[SIZE]; 
   public: 
      safearay() 
      { 
         int i; 
         for(i = 0; i < SIZE; i++) 
         { 
           arr[i] = i/3.0; 
         } 
      } 
      T &operator[](int i) 
      { 
          if( i > SIZE ) 
          { 
              cout << "Index out of bounds" <<endl; 
              // return first element.  
              return arr[0]; 
          } 
          return arr[i]; 
      } 
}; 
int main() 

   safearay <double> A; 
 
   cout << "Value of A[0] : " << A[0]<<endl; 
   cout << "Value of A[1949] : " << A[1949] <<endl; 
   cout << "Value of A[2013] : " << A[2013]<<endl; 
 
   return 0; 

/*****************************************
运行结果:
Value of A[0] : 0
Value of A[1949] : 649.667
Index out of bounds
Value of A[2013] : 0
 
Process returned 0 (0x0)   execution time : 5.580 s
Press any key to continue.
 
******************************************/ 

#include <iostream>
using namespace std;
const int SIZE = 1991;
template <typename T>
class safearay
{
   private:
      T arr[SIZE];
   public:
      safearay()
      {
         int i;
         for(i = 0; i < SIZE; i++)
         {
           arr[i] = i/3.0;
         }
      }
      T &operator[](int i)
      {
          if( i > SIZE )
          {
              cout << "Index out of bounds" <<endl;
              // return first element.
              return arr[0];
          }
          return arr[i];
      }
};
int main()
{
   safearay <double> A;

   cout << "Value of A[0] : " << A[0]<<endl;
   cout << "Value of A[1949] : " << A[1949] <<endl;
   cout << "Value of A[2013] : " << A[2013]<<endl;

   return 0;
}
/*****************************************
运行结果:
Value of A[0] : 0
Value of A[1949] : 649.667
Index out of bounds
Value of A[2013] : 0

Process returned 0 (0x0)   execution time : 5.580 s
Press any key to continue.

******************************************/


 

补充:软件开发 , C++ ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,