Чтобы задать смысл индексов для объектов класса, исп-ся ф-ия operator[ ].Второй пар-р(индекс)ф-ии operator[ ] может быть любого типа.Это позволяет опр-ть ассоц-ые массивы и т.п..Опер-ры инд-ия м-ва[ ]можно перегрузить для реал-ии доступа к д-ым членам класса,подобного доступу к элем-там м-ва, даже если эти д-ые имеют вид отд-ых членов или связ-го списка.Р-м пр-р демонстр-ий перегрузку опер-ра индексации для класса,запомин-го 4 цел-ых зн-ий в виде отд-ых д-ых членов:
#include<iostream.h>
class PsevdoArray{
int value0,value1,value2,value3;
public:
PsevdoArray(int v0,int v1,int v2,int v3)
{value g=v0;value g=v0;value g=v0; value g=v0;}
int Getint(unsegned i);
int operator[](unsegned i);};
void main(void){
PsevdoArray pa(10,20,30.40);
for(int i=0;i<=3;i++)
cout<<”pa[”<<i<<”]”==”<<pa[i]<<endl;}
int PsevdoArray:: Getint(unsegned i){
switch(i){
case 0:return value 0;
case 1:return value 1;
case 2:return value 2;
case 3:return value 3;
default:return value 0;}}
int PsevdoArray::operator[](unsegnad i){
return Getint(i);}
Вызов такой ф-ии,как Getint-это способ “добрать-ся”до личных членов д-ых класса.Т.к.в классе перегр-н опер-р индексир-ия м-ва,то можно исп-ть сл.опер-р:cout<<”value2==”<<pa[1];Также индексы перегр-ых м-вов могут быть поизв-ми типами д-ых: int operator[ ](char c);Теперь можно исп. симв. Индексы,подобные символам от A?D для инд-ии м-ва
Опер-ры индексирования массива
24 Фев, 2009
