¿Pueden las funciones estáticas ser virtuales en C++?

En C++, una función miembro estática de una clase no puede ser virtual. Las funciones virtuales se invocan cuando tiene un puntero o una referencia a una instancia de una clase. Las funciones estáticas no están vinculadas a la instancia de una clase, pero están vinculadas a la clase. C++ no tiene punteros a clase, por lo que no existe un escenario en el que pueda invocar virtualmente una función estática.

Por ejemplo, el siguiente programa da un error de compilación,

CPP

// CPP Program to demonstrate Virtual member functions
// cannot be static
#include <iostream>
 
using namespace std;
 
class Test {
public:
    virtual static void fun() {}
};

Producción

prog.cpp:9:29: error: member ‘fun’ cannot be declared both virtual and static
    virtual static void fun() {}
                            ^

Además, la función de miembro estático no puede ser constante y volátil . El siguiente código también falla en la compilación,

CPP

// CPP Program to demonstrate Static member function cannot
// be const
#include <iostream>
 
using namespace std;
 
class Test {
public:
    static void fun() const {}
};

Producción

prog.cpp:8:23: error: static member function ‘static void Test::fun()’ cannot have cv-qualifier
    static void fun() const {}
                      ^

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

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 *