The relationship between descriptor classes

Describes inheritance relationship between the descriptor classes and associated abstract base classes.

The following diagram shows the inheritance relationship between the concrete descriptor classes and their abstract base classes.

The diagram uses the 16-bit variant types:

but the relationship is exactly the same for the 8-bit variants. The class names can also be replaced by the build independent types and the relationships remains valid.

The TBufBase16 and TBufCBase16 classes are an implementation convenience and are not part of the public API.

TDesC16 and TDes16 are abstract classes and cannot be instantiated, However, these types can be passed as arguments to functions.

Inheritance relationship between the concrete descriptor classes and their abstract base classes

Because descriptors are widely used (especially on the stack), the size of descriptor objects must be kept to a minimum. To help with this, no virtual functions are defined in order to avoid the overhead of a virtual function table pointer in each descriptor object.

As a consequence, the base classes have implicit knowledge of the classes derived from them.