C++ | Palabra clave estática | Pregunta 6

¿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;
}

Cuestionario de esta pregunta

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *