Freigeben über


Indizierung

Der tiefgestellten Operator ([]), z. B. der Aufrufoperator, wird als einen binären Operator.Der Operator tiefgestellte muss eine nicht statischen Memberfunktion aufweisen, die ein einzelnes Argument akzeptiert.Dieses Argument kann einen beliebigen Typ aufweisen und legt den gewünschten Arrayfeldindex fest.

Beispiel

Im folgenden Beispiel wird veranschaulicht, wie ein Vektor vom Typ int erstellt, der Überprüfung der Grenzen implementiert:

// 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;
}
  
  
  

Kommentare

Wenn i 10 im vorangehenden Programm operator[] erreicht, erkennt, dass ein Index außerhalb einer angegebenen Begrenzungen und eine Fehlermeldung verwendet wird.

Beachten Sie, dass die Funktion operator[] einen Verweistyp zurückgibt.Dadurch wird es, ein L-Wert sein und auf beiden Seiten ermöglicht Ihnen das Verwenden von indizierten ausdrücken von Zuweisungsoperatoren.

Siehe auch

Referenz

Überladen von Operatoren