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.
******************************************/