How is Virtual Inheritance Implemented?

When multiple inheritance is used, it is sometimes necessary to use virtual inheritance. A good example for this is the standard iostream class hierarchy:

 //Note: this is a simplified description of iostream classesclass  ostream: virtual public ios { /*..*/ }class  istream: virtual public ios { /*..*/ }class iostream : public istream, public ostream { /*..*/ } //a single ios inherited

How does C++ ensure that only a single instance of a virtual member exists, regardless of the number of classes derived from it? C++ uses an additional level of indirection to access a virtual class, usually by means of a pointer. In other words, each object in the iostream hierarchy has a pointer to the shared instance of the ios object. The additional level of indirection has a slight performance overhead, but it’s a small price to pay.

Share the Post:
Share on facebook
Share on twitter
Share on linkedin

Overview

Recent Articles: