Las 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:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int (*p)(char const *);
p("Linea 1");
(*p)("Linea 2");
p = &puts;
(*p)("Linea 3");
(**p)("Linea 4");
(***p)("Linea 5");
return EXIT_SUCCESS;
}
Es valido.
----
Y 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.
Por 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:
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