The vtable is the simplest and most straightforward implementation of the virtual function calling mechanism; it was Bjarne Stroustrup's original implementation of this mechanism for C++. Essentially an array of pointers to implementations of member functions (and offsets to descendant pieces of virtual base classes), each instance of a class with at least one virtual member function carries a vtable around as a secret data member.

Although the C++ standard does not explicitly specify that the virtual function calling mechanism has to be implemented by a vtable, nearly all C++ compilers (especially g++) implement it this way. The development of an alternative mechanism is probably very expensive, and so any compiler vendor that may have developed one will be motivated to keep it a trade secret.

One possible alternative implementation still involves a vtable, but *outside* the class, as part of a pointer or reference to an instance of the class. This means that pointers to classes will be larger than pointers to most POD types, but something like that is already necessary for char * on some platforms.