Skip to content
Related Articles

Related Articles

Improve Article
Save Article
Like Article

Can Static Functions Be Virtual in C++?

  • Difficulty Level : Easy
  • Last Updated : 22 Dec, 2021

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 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.

Take a step-up from those "Hello World" programs. Learn to implement data structures like Heap, Stacks, Linked List and many more! Check out our Data Structures in C course to start learning today.
My Personal Notes arrow_drop_up
Recommended Articles
Page :

Start Your Coding Journey Now!