views:

1235

answers:

11

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.

+7  A: 

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".

Thomas Owens
I read it the same way. I wonder why....(P.S. Hi TO!)
Marc W
I found the wikipedia article before I posted the question. Despite the fact that it's listed under the "name" column in the table, I'm inclined to believe that's a description, not a name.
rmeador
+16  A: 

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.

John at CashCommons
I can confirm that this is the case. (Yes, I actually went to The C++ Programming Language Special Edition and checked it out.)
Thomas Owens
he didn't invent C, and that's where the operator comes from.
asveikau
asveikau, both of your statements are correct, but what does that have to do with the question?
John at CashCommons
asveikau: That's true. But the same operator can have different names in different languages, even though it's the same thing. And the question is specifically about its name in C++. If anything is the answer, this is.
Thomas Owens
@John W: Well, to be fair, the OP explicitly asked for the *offical* name of the operator.
AndreyT
Please note that TC++PL book is not a formal and/or official source of information on C++ language. TC++PL is deliberately written to be more accessible to beginners. On a number of topics, for the sake of simplicity, it deliberatly contadicts official sources (i.e. speaking pedantically, contains deliberate errors). TC++PL is a good book, but you have to be careful when moving from TC++PL into the "official" world of C++.
AndreyT
+22  A: 

The C++ standard just calls it "arrow" (§5.2.5).

Jerry Coffin
First mentioned in 5.2.4, but then ubiquitously with the dot operator too.
Jonathan Leffler
+8  A: 

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.

AndreyT
A: 

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.

Loadmaster
+2  A: 

Its just the dit (ie not dot).

James Morris
+1  A: 

Dereference Pointer

Jonathan D
A: 

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.

transitive
+1  A: 

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.

Christoph
A: 

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).

Jonathan Leffler
A: 

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".

phreed