¿Salida del siguiente programa C++?
#include <iostream> class Test { public: void fun(); }; static void Test::fun() { std::cout<<"fun() is static\n"; } int main() { Test::fun(); return 0; }
Contribuido por Pravasi Meet
(A) fun() es estático
(B) Pantalla vacía
(C) Error del compilador
Respuesta: (C)
Explicación: El programa anterior falla en la compilación y muestra los siguientes mensajes de error.
[Error] no se puede declarar la función miembro ‘void Test::fun()’ para tener enlace estático [-fpermissive]
En la función ‘int main()’:
[Error] no se puede llamar a la función miembro ‘void Test::fun()’ sin objeto
Si la función estática se va a definir fuera de la clase, la palabra clave estática debe estar presente en la declaración de la función, pero no en la definición fuera de la clase.
El siguiente programa ahora es correcto.
#include <iostream> class Test { public: static void fun(); }; void Test::fun() { std::cout<<"fun() is static\n"; } int main() { Test::fun(); return 0; }
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA