Difference between Virtual function and Pure virtual function in C++
A virtual function is a member function which is declared within a base class and is re-defined(Overridden) by a derived class. When you refer to a derived class object using a pointer or a reference to the base class, you can call a virtual function for that object and execute the derived class’s version of the function.
A pure virtual function (or abstract function) in C++ is a virtual function for which we don’t have an implementation, we only declare it. A pure virtual function is declared by assigning 0 in the declaration.
Similarities between virtual function and pure virtual function
- These are the concepts of Run-time polymorphism.
- Prototype i.e. Declaration of both the functions remains the same throughout the program.
- These functions can’t be global or static.
Difference between virtual function and pure virtual function in C++
Virtual function | Pure virtual function |
---|---|
A virtual function is a member function of base class which can be redefined by derived class. | A pure virtual function is a member function of base class whose only declaration is provided in base class and should be defined in derived class otherwise derived class also becomes abstract. |
Classes having virtual functions are not abstract. | Base class containing pure virtual function becomes abstract. |
Syntax:
| Syntax:
|
Definition is given in base class. | No definition is given in base class. |
Base class having virtual function can be instantiated i.e. its object can be made. | Base class having pure virtual function becomes abstract i.e. it cannot be instantiated. |
If derived class does not redefine virtual function of the base class, then it does not affect compilation. | If derived class does not redefine virtual function of the base class, then no compilation error is encountered, but like the base class, derived class also becomes abstract. |
Contact Us