Cita de: eferion en 11 Julio 2013, 08:20 AMLas funciones no tienen operadores de indirección.Desconozco cual sea el caso en C++ pero en C es posible (y confuso) aplicar (o no, es al gusto) los operadores de indirecion y "dirección de" en el caso de funciones. Por ejemplo este programa:
Código (c) [Seleccionar]
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int (*p)(char const *);
p = puts;
p("Linea 1");
(*p)("Linea 2");
p = &puts;
(*p)("Linea 3");
(**p)("Linea 4");
(***p)("Linea 5");
return EXIT_SUCCESS;
}
Es valido.
----
Cita de: Zodiak98 en 11 Julio 2013, 19:26 PMY cual es la diferencia entre hacerlo con paréntesis y sin paréntesis ?Esto tienes que explicarlo mejor ya que todos los ejemplos hasta el momento involucran llamadas a función y, por ende, paréntesis.
Cita de: Zodiak98 en 11 Julio 2013, 19:26 PMPor lo qué pude ver los qué tienen paréntesis son punteros qué no apuntan hacía ningún otro objeto si no hacía los datos miembros de la clase.No. Tienes que revisar la expresión por partes. Si tomamos el ejemplo de eferion, la sentencia en cuestión es:
Código (cpp) [Seleccionar]
func()->a = 7;
Los pasos al evaluar la expresión son:
1) La llamada a función "func()" resulta en un puntero de tipo "poo *".
2) Cuando se trabaja con punteros a estructuras o clases se puede utilizar el operador "->" para aplicar indireccion y acceder al campo indicado (a la derecha del operador y en este caso de nombre "a").
3) En el mentado campo (indicado por el paso anterior) se almacena el valor 7.
Un saludo