There is no formal definition of object-oriented programming. Hence there is some confusion surrounding what features a programming language must support in order to claim that it is object-oriented. Despite this, however, most agree that in order for a language to claim that it is object-oriented, it must provide support for three major concepts, as inferred from Booch's definition.
The following subsections will explain these features and show how C++ provides support for them through its concept of a class; the underlying mechanism upon which all good C++ programs are based. Examples of how these features can be used will be seen later in the dissertation.