On understanding types, data abstraction, and polymorphism
ACM Computing Surveys (CSUR) - The MIT Press scientific computation series
The C++ programming language
Dimensions of object-based language design
OOPSLA '87 Conference proceedings on Object-oriented programming systems, languages and applications
ACM Transactions on Programming Languages and Systems (TOPLAS)
Software—Practice & Experience
Polymorphism and type checking in object-oriented languages
ACM SIGPLAN Notices
Virtual classes: a powerful mechanism in object-oriented programming
OOPSLA '89 Conference proceedings on Object-oriented programming systems, languages and applications
The annotated C++ reference manual
The annotated C++ reference manual
Strong typing of object-oriented languages revisited
OOPSLA/ECOOP '90 Proceedings of the European conference on object-oriented programming on Object-oriented programming systems, languages, and applications
Advanced C++ programming styles and idioms
Advanced C++ programming styles and idioms
HOPL-II The second ACM SIGPLAN conference on History of programming languages
Inheritance modeled with explicit bindings: an approach to typed inheritance
OOPSLA '93 Proceedings of the eighth annual conference on Object-oriented programming systems, languages, and applications
The evolution of C++: 1985–1989
The evolution of C++
The design and evolution of C++
The design and evolution of C++
Object-oriented programming in the BETA programming language
Object-oriented programming in the BETA programming language
Object-Oriented Software Construction
Object-Oriented Software Construction
Hi-index | 0.00 |
Inheritance together with virtual functions in C++ provides programmers much polymorphism, an important facility of object-oriented design and programming. However, they can hardly be applied to enrich a family of classes (including the base classes and their derived classes) with some common features. Multiple inheritance and virtual base classes are usually hired to solve such a problem, or templates can also be employed for the same purpose. Unfortunately, these approaches are unnatural and costly. Moreover, virtual base classes deflect from the concept of dynamic binding behind virtual functions and therefore complicate the incomplete virtuality in C++. In this paper, we demonstrate that truly virtual base classes can be utilized to solve the problem effectively and efficiently, and can be used to express explicitly what virtual base classes do implicitly in a more flexible and lucid way. In addition, they along with virtual data members can provide further polymorphism and a type-safe and efficient alternative to constrained genericity and multiple inheritance in some cases, and hence facilitate the design and implementation of extensible and portable software, especially libraries of classes.