1

How instances of virtual base class are available to derived class,How it can be implemented in following code ?

class A
{
public:
void test();
};


class B : virtual public A
{
};


class c : public A
{
} ;

 class D : public B, public C
{
};
smali
  • 4,687
  • 7
  • 38
  • 60
  • 3
    I wonder what language is that. Not C++ for sure. – Wojtek Surowka Jul 15 '14 at 10:58
  • possible duplicate of [In C++, what is a virtual base class?](http://stackoverflow.com/questions/21558/in-c-what-is-a-virtual-base-class) – πάντα ῥεῖ Jul 15 '14 at 11:09
  • I would recommend that you read "Inside the C++ Object Model", where all these implementation details are clearly explained. Note that in this particular case, and because only one of the inheritance relationships is virtual you get as many copies as you would otherwise, albeit with some differences: different object layout, different order of initialization. – David Rodríguez - dribeas Jul 15 '14 at 12:34

1 Answers1

0

See inscribed comments with corrected version:

class A
{
public:
void test();
};

class B: virtual public A // A is a virtual base class
{
};


class C : public A // C is a base class of A
{
} ;

class D: public B, public C // D has two base classes B and C
{
};

By virtue of inheritance, D gets two copies of A, one via B, another via C You could have only one shared copy of A in D, if you would have declared:

class C : virtual public A // C is a virtual base class of A
{
} ;
Dr. Debasish Jana
  • 6,980
  • 4
  • 30
  • 69