I am reading about the implementation of late binding polymorphism in C++ and I learned about virtual tables and virtual pointers.
Then I searched on the C++ standard (ISO/IEC 14882:2011) to get more information about how this behavior should be implemented.
Unfortunately I found nothing relevant in this massive standard except the definition of Virtual functions at §10.3 so I suppose the concept of __vptr
is used by GCC but could be implemented differently.
Is there a standard or a paper that describe how virtual methods should be implemented?
No they are not defined by the standard. They are instead implementation concepts, rather like a stack or a heap.
The standard is helpful in permitting the implementation of polymorphism to be carried out in a certain way, for example, the address of the first member variable of a class
doesn't need to be the address of an instance of that class if that class is a polymorphic type.