C++ Virtual Functions

C++ Tutorial

🧠 C++ Virtual Functions

A virtual function in C++ is a member function that is declared using the virtual keyword and is overridden in a derived class.
It supports run-time polymorphism, meaning the function call is resolved at runtime based on the object type, not the pointer type.


 1. Why Virtual Functions?

Without virtual functions, C++ uses compile-time binding (static binding).
With virtual functions, C++ uses dynamic binding.


 2. Basic Syntax


 


 3. Virtual Function Example


 

✔ Function call decided at runtime
✔ Based on object type


 4. Without virtual (No Polymorphism)



 

❌ Wrong behavior for polymorphism


 5. Virtual Function Rules

  • Declared in base class

  • Overridden in derived class

  • Accessed using base class pointer/reference

  • Must have same signature


 6. override Keyword (Best Practice)



 

✔ Catches signature mistakes
✔ Improves readability


 7. Virtual Destructor (Very Important)



 

✔ Ensures correct destructor call when deleting derived object via base pointer


 8. Pure Virtual Function (Abstract Class)



 

✔ Class becomes abstract
✔ Cannot create object of abstract class


 9. Virtual Table (vtable) – Concept

  • Compiler creates a vtable for classes with virtual functions

  • Base pointer uses vtable to call correct function at runtime

  • Slight memory overhead


 10. Virtual Function in Multilevel Inheritance



 


❌ Common Mistakes

virtual void fun(); // ❌ missing definition
Animal a = Dog(); // ❌ object slicing

🔁 Virtual vs Non-Virtual

Virtual Non-Virtual
Runtime binding Compile-time binding
Polymorphism No polymorphism
Slightly slower Faster
Uses vtable No vtable

📌 Summary

  • Virtual functions enable runtime polymorphism

  • Declared using virtual

  • Use base pointer to derived object

  • override improves safety

  • Virtual destructors are critical

You may also like...