I think -> dereferences first. So if 'thing' is a pointer to some object, thing->function() first deferences the pointer to get the object it points to, then called its function() method on it.
For example, from the MSDN site:
Code:
// Declare a new object of type Point.
Point ptOrigin;
// Member function calls use the . member-selection operator.
ptOrigin.SetX( 0 );
cf
Code:
// Declare a pointer to an object of type Point.
Point *pptCurrent = new Point;
// Member function calls use the -> member-selection operator.
pptCurrent->SetX( ptOrigin.GetX() + 10 );
Note the differences between how Point ptOrigin and pptCurrent are defined.