Předplatné
Operátor dolního indexu ([ ]), je stejně jako operátor volání funkce, považován za binární operátor.Operátor dolního indexu musí být nestatická členská funkce, která přijímá jeden argument.Tento argument může být libovolného typu, který označuje dolní index požadovaného pole.
Příklad
Následující příklad ukazuje, jak vytvořit vektor typu int, který implementuje kontrolu mezí:
// subscripting.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;
class IntVector {
public:
IntVector( int cElements );
~IntVector() { delete [] _iElements; }
int& operator[]( int nSubscript );
private:
int *_iElements;
int _iUpperBound;
};
// Construct an IntVector.
IntVector::IntVector( int cElements ) {
_iElements = new int[cElements];
_iUpperBound = cElements;
}
// Subscript operator for IntVector.
int& IntVector::operator[]( int nSubscript ) {
static int iErr = -1;
if( nSubscript >= 0 && nSubscript < _iUpperBound )
return _iElements[nSubscript];
else {
clog << "Array bounds violation." << endl;
return iErr;
}
}
// Test the IntVector class.
int main() {
IntVector v( 10 );
int i;
for( i = 0; i <= 10; ++i )
v[i] = i;
v[3] = v[9];
for ( i = 0; i <= 10; ++i )
cout << "Element: [" << i << "] = " << v[i] << endl;
}
Komentáře
Jakmile i dosáhne v předchozí aplikaci 10, operator[] zjistí použití dolního indexu, který je mimo rozsah a vyvolá chybovou zprávu.
Všimněte si, že funkce operator[] vrátí typ odkazu.To způsobuje, že je l hodnotou, což umožňuje použití výrazů dolního indexu na obou stranách operátorů přiřazení.