As far as developersare 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.
The C++ programming language has always helped developers to write code that exploits the microprocessor (on which generated code runs) and also raise the level of abstraction when it matters. While raising the abstraction, the designers of the language have always tried to minimize (almost eliminate) their performance overhead. This is called Zero Cost Abstraction or Zero Overhead Cost Abstraction. The only notable penalty you pay is the cost of indirect calls...