Understanding the history of C++ allows us to understand the appreciate the traits of the language.
Three things to take away:
- C was built to be small, efficient, and close to the machine.
- C++ began as “C with Classes,” adding abstraction mechanisms on top of C-like performance.
- Modern C++ continues to evolve, but the core tension remains the same: abstraction without unnecessary overhead
Before C++, there was C
The C language was developed in 1972 primarily as a systems programming language by Dennis Ritchie at Bell Telephone laboratories. C was designed for systems programming — the kind of programming used to build operating systems, compilers, tools, and low-level software infrastructure.
Dennis Ritchie’s goals was to produce a minimalistic language that was:
- Easy to compile
- Allowed efficient access to memory
- Produced efficient code, and
- Was self-contained (not reliant on other programs)
- Gave the programmer significant freedom
ANSI C was released in 1989. This is called the C89 standard. In 1990, ISO adopted ANSI C. This version became C90. In 1999, C99 was developed.
C++ is born
C++ was developed by Bjarne Stroustrup at Bell Labs as an extension to C, starting in 1979.
It can be thought of as the Pro version of C, adding new features such as objects, classes, templates, constructors, destructors, function overloading and namespaces.
The biggest difference is that C++ and its predecessor is that C++ supports OOP. This is what makes it a high-level language. This was actually one of the goals of the language – to support object-oriented programming. C++ was actually called C with classes in it’s early days.
The modern standards
C++ was first standardised by ISO in 1998. That version is commonly called C++98.
Since then, the language has continued to evolve through regular standards released every 3 years:
| Standard | Common name |
|---|---|
| ISO/IEC 14882:1998 | C++98 |
| ISO/IEC 14882:2003 | C++03 |
| ISO/IEC 14882:2011 | C++11 |
| ISO/IEC 14882:2014 | C++14 |
| ISO/IEC 14882:2017 | C++17 |
| ISO/IEC 14882:2020 | C++20 |
| ISO/IEC 14882:2024 | C++23 |
The last two digits represent the year of release.
C++11 was especially important. It introduced major modern C++ features such as move semantics, lambda expressions, auto, nullptr, range-based for loops, smart pointers, and a much stronger standard library foundation.
That is why people often distinguish between “old C++” and “modern C++.” The language changed substantially after C++11.
In conclusion
C++ was created to solve a specific problem: how to write large, well-structured programs without giving up the efficiency and control that made C useful.