1
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?

harishaj90
  • 132
  • 1
  • 10

0 Answers0