I think the subject says it all. I always call it the "arrow operator", but I'm sure it has an official name. I quickly skimmed the C++ standard and didn't see it mentioned by name.
According to Wikipedia's list of operators in C and C++, it's called "member by pointer".
But to be totally honest, I've always called it "arrow". For example, if I had the code a->b
, I would read that as "a arrow b".
Bjarne Stroustrup calls it the "structure pointer dereference" operator (TC++PL Special Edition, p. 102). In the index he refers to it as the "member access" operator.
Not sure if this is "official" but the guy did write the language, after all.
The official name for this operator is "class member access operator" (see 5.2.5). Although this name is attached to both '.' and '->' operators, so it's more of a group name. The '.' is also referred to as "dot operator" and '->' as "arrow operator" in the standard text.
Added later: The above applies to C++ standard. C standard refers to '->' as an "arrow operator" in the Index only. The main text of the document doesn't seem to use any name.
The ISO C standard calls it the->
operator or the member-access->
operator. So apparently it does not have an "official" name in C.
Personally, I just say pointer or arrow.
I've heard it referred to a few different ways, was never sure any one in particular was more official than another.
- Member Selection Operator
- Pointer Dereferencing Operator
- "the arrow thingy"
and I'm sure there are others. personally I'm less concerned about what its called in a book or an official spec and more concerned that people know what I mean when I refer to it, so in my opinion "arrow thingy" is the best name for it since its the easiest to understand clearly what is being referred to.
These terms are in no way official, but I'd call the dot operator the direct (class) member access operator and the arrow operator the indirect (class) member access operator to clarify their relationship with the indirection operator.
The index to ISO/IEC 9899:1999 (the C99 standard) has three index entries for 'arrow operator' (in its own right, and under 'union' and 'struct'), and refers to section 6.5.2.3 (Structure and union members, in the section on Postfix operators). However, there is no mention of 'arrow' in section 6.5.2.3 or anywhere else in the standard than the index (every other appearance of 'arrow' is as part of 'narrow' or a derivative of narrow).
Arrow is therefore semi-officially sanctioned in the C standard (the index is not normative or standard setting, though).
There was a recent question regarding how the operator is "pronounced" in context. Consider the multiplication operator which is pronounced "times" in context.
I consider both member access operators {. ->} to indicate possession so I pronounce them as a possessive on the object.
For example... fido->collar() ...would be pronounced as "fido's collar".
On the other hand possession isn't appropriate for verbs so... fido->run() ...would be pronounced as "fido runs".