2009-10-16 27 views
40

Siempre lo llamo el "operador de flecha", pero estoy seguro de que tiene un nombre oficial. Rápidamente revisé el estándar de C++ y no lo mencioné por su nombre.¿cuál es el nombre oficial del operador de flecha (->) de C++?

+0

En un borrador C99, no puedo encontrar ninguna mención de su nombre. Siempre se llama "-> operador" en ese documento. –

+0

@Mehrdad: Lo llaman "operador de flecha" en el índice aunque – AnT

+3

AndreyT: en el índice, puedo ver "operador de flecha (->)" y "operador de puntero (->)" –

Respuesta

59

El estándar de C++ simplemente lo llama "flecha" (§5.2.5).

+3

Primero mencionado en 5.2.4, pero luego omnipresente con el operador de punto también. –

8

Según Wikipedia's list of operators in C and C++, se llama "miembro por puntero".

Pero para ser totalmente honesto, siempre lo he llamado "flecha". Por ejemplo, si tuviera el código a->b, leería eso como "una flecha b".

+1

Lo leí de la misma manera. Me pregunto por qué .... (P.S. ¡Hola!) –

+1

Encontré el artículo de la wikipedia antes de publicar la pregunta. A pesar de que aparece en la columna "nombre" de la tabla, me inclino a creer que es una descripción, no un nombre. – rmeador

27

Bjarne Stroustrup lo llama el operador "desreferencia de puntero de estructura" (TC++ PL Edición especial, p.102). En el índice, se refiere a él como el operador de "acceso de miembros".

No estoy seguro de si esto es "oficial", pero el tipo sí escribió el idioma, después de todo.

+1

Puedo confirmar que este es el caso. (Sí, de hecho fui a la edición especial del lenguaje de programación de C++ y lo comprobé). –

+19

no inventó C, y de ahí viene el operador. – asveikau

+2

asveikau, ambas afirmaciones son correctas, pero ¿qué tiene eso que ver con la pregunta? – John

12

El nombre oficial de este operador es class member access operator (ver 5.2.5). Aunque este nombre está asociado a los operadores . y ->, lo que significa que es más un nombre de grupo. El . también se conoce como operador de punto y -> como operador de flecha en el texto estándar.

Agregado después: Lo anterior se aplica al estándar C++. C estándar se refiere a -> como operador de flecha en el índice solamente. El texto principal del documento no parece usar ningún nombre específico.

0

estándar La ISO C llama la->operador o la->operador miembro de acceso. Así que al parecer no tiene un nombre "oficial" en C.

En lo personal, me acaba de decir puntero o flecha .

4

Es solo el dit (es decir, no punto).

1

referencia a un puntero

1

he oído que se refería a unas cuantas formas diferentes, nunca estaba seguro de ninguno en particular era más oficial que otro.

  • selección de miembros del operador
  • puntero dereferencing operador
  • "la flecha cosita"

y estoy seguro de que hay otros. personalmente me preocupa menos lo que se llama en un libro o una especificación oficial y me preocupa más que las personas sepan a qué me refiero cuando me refiero a él, así que en mi opinión "arrow thingy" es el mejor nombre ya que es el más fácil para entender claramente a qué se refiere.

2

Estos términos no son de ninguna manera oficial, pero me llaman el operador punto el operador de acceso (clase) miembro directo y el operador de flecha el operador de acceso indirecta (clase) miembro de para aclarar su relación con el operador indirecto.

2

El índice de ISO/IEC 9899: 1999 (el estándar C99) tiene tres entradas de índice para 'operador de flecha' (por derecho propio, y bajo 'unión' y 'estructura') y hace referencia a la sección 6.5. 2.3 (Estructura y miembros de la unión, en la sección sobre operadores de Postfix). Sin embargo, no hay mención de 'flecha' en la sección 6.5.2.3 ni en ningún otro lugar en el estándar que el índice (cualquier otra aparición de 'flecha' es como parte de 'estrecha' o una derivada de estrecha).

Por lo tanto, la flecha está aprobada de manera sem oficial en el estándar C (aunque el índice no es normativo o estándar).

0

Hubo una pregunta reciente sobre cómo el operador se "pronuncia" en su contexto. Considere el operador de multiplicación que se pronuncia "veces" en el contexto.

Considero que ambos operadores de acceso a miembros {. ->} para indicar la posesión, entonces los pronuncio como posesivos sobre el objeto.

Por ejemplo ... fido-> collar() ... sería pronunciado como "collar de fido".

Por otro lado, la posesión no es apropiada para los verbos, así que ... fido-> run() ... se pronunciaría como "fido runs".

+0

Esto está fuera de tema: el OP preguntó cómo se llamaba el símbolo, y ya se ha proporcionado una respuesta que cita el estándar de C++. Si hubo otra pregunta con respecto a la pronunciación de los símbolos, debe comentar allí en lugar de aquí. – DMH

Cuestiones relacionadas