As far as developers are concerned, the three key concerns that C++ programming language designers keep in mind were (and still are) as follows:
- Zero Cost Abstraction - No performance penalty for higher level abstraction
- Expressivity - A user defined type (UDT) or class should be as expressive as built-in types
- Substitutability - A UDT can be substituted wherever built-in-types are expected (as in generic data structures and algorithms)
We will discuss these briefly.