It is customary to overload the subscript operator, [], in classes that hold a sequence of elements. Vector and String are examples of such classes. When you overload operator [], remember to define two versions thereof: a non-const version and a const one. For example:
class MyString{private: char * buff; int size;public: //... char& operator [] (int index) { return buff[index]; } //non-const const char& operator [] (int index) const { return buff[index]; } //const};
The const version of the subscript operator is called when its object itself is const:
void f(const MyString& str){ char c = str[0]; //calls const char& operator [] (int index) const }