Overloading the Subscript Operator the Right Way

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 }
Share the Post:
Share on facebook
Share on twitter
Share on linkedin


Recent Articles: