Индексирование объектов

Оператор [ ] (квадратные скобки) может перегружаться так же, как и рассмотренные выше арифметические операторы. Здесь рассмотрим пример, в котором посредством перегрузки оператора [ ] решается задача по индексированию объектов. В частности, в программе описывается класс с полем-целочисленным массивом. Обычный способ обращения к элемен­ту массива-члена класса подразумевает указание объекта, имени поля массива и индекса элемента массива. Переопределив оператор [ ], сможем обращаться к элементу поля-массива, указав после имени объекта соответствующий индекс. Программный код приведен в следующем примере.
#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;}
Онлайн всего: 14
Гостей: 14
Пользователей: 0

STUDLAB Сообщить про опечатку на сайте