TITLE: dominance and virtual inheritance (Newsgroups: comp.lang.c++.moderated, 22 Sep 96) CLAMAGE: clamage@taumet.Eng.Sun.COM (Steve Clamage) [...] Thus, many C++ experts recommend that a class used as a virtual base class have no user-defined constructors at all, and no data either. [...] HOWLETT: howlett@netcom.com (Scott Howlett) And this usually obviates the need for the virtual inheritance, no? MARTIN: rmartin@oma.com (Robert C. Martin) Not always. The dominance rule still makes virtual inheritance of abstract base classes useful. class B { public: virtual void f() = 0; virtual void g() = 0; }; class D1 : public virtual B { public: virtual void f(); // implemented. }; class D2 : public virtual B { public: virtual void g(); // implemented. }; Now, the dominance rule allows this: class M : public D1, public D2 { }; M is a concrete class in which M::f is implemented by D1 and M::g is implemented gy D2. Had B not been a virtual base, then M would have had to be written to delegate to the appropriate functions: class M, public D1, public D2 { public: virtual void f() {D1::f{};} virtual void g() {D2::g();} };