Can Static Functions Be Virtual in C++?
In C++, a static member function of a class cannot be virtual. Virtual functions are invoked when you have a pointer or reference to an instance of a class. Static functions aren’t tied to the instance of a class but they are tied to the class. C++ doesn’t have pointers-to-class, so there is no scenario in which you could invoke a static function virtually.
For example, below program gives compilation error,
CPP
// CPP Program to demonstrate Virtual member functions // cannot be static #include <iostream> using namespace std; class Test { public : virtual static void fun() {} }; |
Output
prog.cpp:9:29: error: member ‘fun’ cannot be declared both virtual and static virtual static void fun() {} ^
Also, static member function cannot be const and volatile. Following code also fails in compilation,
CPP
// CPP Program to demonstrate Static member function cannot // be const #include <iostream> using namespace std; class Test { public : static void fun() const {} }; |
Output
prog.cpp:8:23: error: static member function ‘static void Test::fun()’ cannot have cv-qualifier static void fun() const {} ^
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.
Please Login to comment...