From 85b9eaa9f7fc2e9708234999f5d5bb262149c9d9 Mon Sep 17 00:00:00 2001 From: Silicon27 <99114143+Silicon27@users.noreply.github.com> Date: Fri, 18 Apr 2025 20:55:48 +0200 Subject: [PATCH] feat(topic): add virtual functions topic content (#8497) --- .../virtual-methods@hNBErGNiegLsUJn_vgcOR.md | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/data/roadmaps/cpp/content/virtual-methods@hNBErGNiegLsUJn_vgcOR.md b/src/data/roadmaps/cpp/content/virtual-methods@hNBErGNiegLsUJn_vgcOR.md index e69de29bb..0dbff4603 100644 --- a/src/data/roadmaps/cpp/content/virtual-methods@hNBErGNiegLsUJn_vgcOR.md +++ b/src/data/roadmaps/cpp/content/virtual-methods@hNBErGNiegLsUJn_vgcOR.md @@ -0,0 +1,23 @@ +# Virtual Functions in C++ + +Virtual functions enable runtime polymorphism in C++, allowing derived classes to override base class behavior. When called via a base pointer/reference, the *actual object's type* determines which function is executed (dynamic dispatch). Non-virtual functions use compile-time resolution based on the pointer/reference type (static dispatch), which prevents overriding. + +```cpp +// Base class with virtual function +class Animal { +public: + virtual void speak() { std::cout << "Generic sound"; } +}; + +// Derived class override +class Dog : public Animal { +public: + void speak() override { std::cout << "Woof!"; } // Dynamic dispatch +}; +``` + +Visit the following resources to learn more: + +- [@official@C++ Virtual Functions Documentation](https://en.cppreference.com/w/cpp/language/virtual) +- [@article@GeeksforGeeks Virtual Functions Guide](https://www.geeksforgeeks.org/virtual-function-cpp/) +- [@video@Virtual Functions Explained (YouTube)](https://www.youtube.com/watch?v=oIV2KchSyGQ&ab_channel=TheCherno)