C++ is an object oriented programming language. It was developed by Bjarne Stroustrup at AT&T Bell Laboratories in Murray Hill, New Jersey, USA, in the early 1980’s. Stroustrup, an admirer of Simula67 and a strong supporter of C, wanted to combine the best of both the languages and create a more powerful language that could support object-oriented programming features and still retain the power and elegance of C. The result was C++.
A programming language serves two related purposes: it provides a vehicle for the programmer to specify actions to be executed, and it provides a set of concepts for the programmer to use when thinking about what can be done. The first purpose ideally requires a language that is “close to the machine” so that all important aspects of a machine are handled simply and efficiently in a way that is reasonably obvious to the programmer. The second purpose ideally requires a language that is “close to the problem to be solved” so that the concepts of a solution can be expressed directly and concisely. The facilities added to C to create C++ were primarily designed keeping these purposes in mind.
C++ is regarded as a middle-level language, as it comprises a combination of both high-level and low-level language features. C++ was developed as an enhancement to the C language and originally named C with classes.
The main source of inspiration for C++ was C and hence it was initially called C with classes. C is retained as a subset and also C’s emphasis on facilities that are low-level enough to cope with the most demanding systems programming tasks. The other main source of inspiration was Simula67; the class concept (with derived classes and virtual functions) was borrowed from it. C++’s facility for overloading operators and the freedom to place a declaration wherever a statement can occur resembles Algol68. Templates were partly inspired by Ada’s generics (both their strengths and weaknesses) and partly by Clu’s parameterized modules. Similarly, the C++ exception handling mechanism was inspired partly by Ada, Clu, and ML.
The name C++ (pronounced ‘‘see plus plus’’) was coined by Rick Mascitti in 1983. The name signifies the evolutionary nature of the changes from C; ‘‘++’’ is the C increment operator. The slightly shorter name ‘‘C+’’ is a syntax error; it has also been used as the name of an unrelated language. Connoisseurs of C semantics find C++ inferior to ++C. The language is also not called D, because it is an extension of C, and it does not attempt to remedy problems by removing features.
After years of development, the C++ programming language standard was ratified in 1998 as ISO/IEC 14882:1998. That standard is still current, but is amended by the 2003 technical corrigendum, ISO/IEC 14882:2003.