No, esto no es correcto.
Main es una función especial y existen requisitos estrictos para ella (incluso más estrictos que una función normal), pero también se crea cierta confusión entre lo que es una función y lo que es un puntero a una función.
El problema lógico es que hay una diferencia entre una función y una variable que contiene un puntero a una función (lo que quiere que sea main). Una función tiene una dirección fija en la memoria, por lo que para llamar a una función esa dirección simplemente se llama. Un puntero a una función señala a una dirección en la memoria, por lo que para llamar a la función necesita primero leer a qué apunta el puntero y luego llamar a esa dirección.
Un puntero a la función tiene un nivel diferente de indirección de una función.
La sintaxis es la misma ... es decir, si x
es un puntero a una función que puede escribir x(42)
, pero aún así el código de máquina generado es diferente si en vez x
es una función (en el caso de un puntero un valor debe se debe buscar y la dirección de la llamada se determina en tiempo de ejecución, con una función la dirección se arregla, hasta la reubicación, y se determina en el tiempo del enlace).
Me encanta la forma en que intentas usar las características más avanzadas de C++ 11, pero aún así insistes en usar 'cstdio' y' printf' :-) – paxdiablo
@paxdiablo: printf rocks !!! C++ falló en las transmisiones de E/S :) –
De acuerdo con Stroustroup ... si C le permite disparar en el pie, ¡C++ puede volarse toda la pierna! ¡Esto es lo que yo llamo ... masoquismo! :-)) –