C++ Virtual Functions
🧠 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 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
-
overrideimproves safety -
Virtual destructors are critical
