statement sobrecarga operator c++ c operators nomenclature

sobrecarga - ¿Cuál es el nombre oficial del operador de flecha(->) de C++?



operator in c (11)

Siempre lo llamo el "operador de flechas", pero estoy seguro de que tiene un nombre oficial. Rápidamente revisé el estándar de C ++ y no lo mencioné por su nombre.


Bjarne Stroustrup lo llama operador de "desreferencia de puntero de estructura" (TC ++ PL Special Edition, 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.


Dereference Pointer


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 se refiere 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, Arrow se sanciona semioficialmente en el estándar C (sin embargo, el índice no es normativo o estándar).


El estándar ISO C lo llama el operador -> o el operador de acceso a miembros -> . Entonces aparentemente no tiene un nombre "oficial" en C.

Personalmente, solo digo puntero o flecha .


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


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


Estos términos no son de ninguna manera oficiales, pero llamaría al operador de punto el operador de acceso directo (de clase) y el operador de flecha el operador de acceso de miembro indirecto (clase) para aclarar su relación con el operador indirecto.


He oído que se refería a algunas maneras diferentes, nunca estaba seguro de que alguien en particular fuera más oficial que otro.

  • Operador de selección de miembros
  • Puntero Desreferencia Operador
  • "la cosa de la flecha"

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.


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 () ... se pronunciaría 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".



El nombre oficial de este operador es operador de acceso de miembro de clase (ver 5.2.5). Aunque este nombre está adjunto a ambos . y -> operadores, 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 más tarde: lo anterior se aplica al estándar C ++. El estándar C se refiere a -> como operador de flecha solo en el índice. El texto principal del documento no parece usar ningún nombre específico.