A virtual public class is used for the class to ensure that the class object inherits only one subobject.
class L { /* ... */ }; // indirect base class class B1 : virtual public L { /* ... */ }; class B2 : virtual public L { /* ... */ }; class D : public B1, public B2 { /* ... */ }; // valid
We have a side effect when we use virtual publishing, when we do not use it for single inheritance. For instance,
class L { /* ... */ }; // indirect base class class B1 : virtual public L { /* ... */ }; class D : public B1 { /* ... */ }; // valid
same as
class L { /* ... */ }; // indirect base class class B1 : public L { /* ... */ }; class D : public B1 { /* ... */ }; // valid
? I mean, is it possible to just make the parent class virtual for all possible cases?
source share