It’s to access a member function or member variable of an object through a pointer, as opposed to a regular variable or reference.
For example: with a regular variable or reference, you use the .
operator to access member functions or member variables.
std::string s = "abc"; std::cout << s.length() << std::endl;
But if you’re working with a pointer, you need to use the ->
operator:
std::string* s = new std::string("abc"); std::cout << s->length() << std::endl;
It can also be overloaded to perform a specific function for a certain object type. Smart pointers like shared_ptr
and unique_ptr
, as well as STL container iterators, overload this operator to mimic native pointer semantics.
For example:
std::map<int, int>::iterator it = mymap.begin(), end = mymap.end(); for (; it != end; ++it) std::cout << it->first << std::endl;