Existing formalisms of inheritance are not sufficient to model the com
plexities of the kind of multiple inheritance exemplified in C++. Any
satisfactory formalism must model the complicating effects of virtual
and non-virtual base classes as well as virtual and non-virtual method
s. By abstracting the implementational notion of a subobject and forma
lizing subobject selection, we develop a formalism to model this combi
nation of features. Not intended as a formal semantics of C++, the res
ulting model should nevertheless provide an essential level of underst
anding for language theorists and implementers in their dealings with
C++ and related languages.