The self is an abstract base class, which is to say that all - or at least many - of its functions are virtual. Derived classes inherit, extend and override the methods and properties of the self. Instantiations of these classes are known as objects. Their data is encapsulated, although friend functions may have access to some data members. Multiple inheritance complicates matters significantly; and one must always be wary of namespace conflicts. I could go on, but I think I've conveyed the gist... Dom