Индексирование объектов
Оператор [ ] (квадратные скобки) может перегружаться так же, как и рассмотренные выше арифметические операторы. Здесь рассмотрим пример, в котором посредством перегрузки оператора [ ] решается задача по индексированию объектов. В частности, в программе описывается класс с полем-целочисленным массивом. Обычный способ обращения к элементу массива-члена класса подразумевает указание объекта, имени поля массива и индекса элемента массива. Переопределив оператор [ ], сможем обращаться к элементу поля-массива, указав после имени объекта соответствующий индекс. Программный код приведен в следующем примере.
#include#include using namespace std; //Размер полей-массивов: const int n=10; //Класс с полем-массивом: class RealNums{ public: //Поле-массив: int p[n]; //Конструктор класса: RealNums(){ int k; for(k=0; k < n; k++) p[k]=rand()%n; } //Перегрузка оператора []: int &operator[](int i){ return p[i]; } //Перегрузка оператора +: RealNums operator+(RealNums obj){ int i; RealNums tmp; for(i=0; i < n; i++) tmp[i]=p[i]+obj[i]; return tmp;} //Метод для вывода значений массива: void show(){ int i; for(i=0; i < n; i++) printf("%3d",p[i]); cout << endl; } }; int main(){ RealNums a,b; a.show(); b.show(); (a+b).show(); for(int i=0; i < n; i++) a[i]=b[i]-a[i]; a.show(); return 0;}