class abstract
{
public:
virtual void function(void) = 0;
};
class d_abstract : public abstract
{
public:
void function(void) {}
};
I have generated VTABLE for above classes using "-fdump-class-hierarchy" option in g++ compiler. VTABLE for both class like below:
Vtable for abstruct
abstruct::_ZTV8abstruct: 3u entries
0 (int (*)(...))0
8 (int (*)(...))(& _ZTI8abstruct)
16 (int (*)(...))__cxa_pure_virtual
Vtable for d_abstract
d_abstract::_ZTV10d_abstract: 3u entries
0 (int (*)(...))0
8 (int (*)(...))(& _ZTI10d_abstract)
16 (int (*)(...))d_abstract::function
In d_abstract class VTABLE contains address of d_abstract::function. But why dummy address of __cxa_pure_virtual instead of NULL being stored in VTABLE of abstract class?