If you’ve been around C++ for a while, you’ve likely come across the terms “vtable”, “virtual table” or “virtual method table”. Vtables are not part of the C++ standard, even though this concept pops up almost immediately when you try to understand how virtual functions actually work in C++. Indeed, vtables are the most common implementation of polymorphism in C++.
You may also have already encountered a cryptic compilation error like “undefined reference to vtable for MyClass”. This may have left you perplexed because you didn’t explicitly create anything named “vtable” in your code. This error signals that, under the hood, the compiler generates vtables to handle virtual functions. If you’re curious about this error, here is a good discussion on Stack Overflow (the second answer is particularly enlightening).