C++ is a general-purpose programming language that combines the efficiency of low-level programming with the features of high-level programming. It was developed by Bjarne Stroustrup in 1979 at Bell Labs as an extension of the C programming language.
- Supports both procedural and object-oriented programming.
- Widely used in software development, game development, operating systems, and competitive programming.
Origin of the Name C++
Initially, the language was called "C with Classes" because it added classes to the C language. In 1983, it was renamed C++. The ++ operator in C is the increment operator, meaning "increase by one." Therefore, C++ can be interpreted as an enhanced version of C.
Evolution of C++
Since its creation in 1979, C++ has undergone several major updates, adding powerful features while maintaining its speed and efficiency.

1979 -> Birth of C with Classes
Bjarne Stroustrup began developing C with Classes, the predecessor of C++. It combined the efficiency of C with object-oriented concepts inspired by Simula.
- Classes and Objects
- Inheritance
- Stronger Type Checking
1983 -> C++ Officially Introduced
The language was officially renamed from C with Classes to C++, representing an enhanced version of C.
- Function Overloading
- Virtual Functions
- References and Const Keyword
- Single-Line Comments (//)
1985 -> First Commercial Release
The first edition of The C++ Programming Language was published, making C++ widely available to developers.
- Official documentation released
- Commercial adoption began
- Growing industry acceptance
1989 -> Major Enhancements
Several powerful object-oriented features were added, making C++ more suitable for large-scale applications.
- Protected Members
- Static Members
- Multiple Inheritance
1990 -> Reference Manual and Turbo C++
The Annotated C++ Reference Manual was published, and Borland introduced the popular Turbo C++ compiler.
- Standardized language reference
- Turbo C++ compiler released
- Increased developer adoption
1998 -> C++98
The first international C++ standard, ISO/IEC 14882:1998, was released.
- Reusable containers
- Generic algorithms
- Improved productivity
Major Addition: Standard Template Library (STL)
2003 -> C++03
C++03 refined the C++98 standard by fixing issues and improving language consistency.
- Bug Fixes
- Language Refinements
- Value Initialization
2011 -> C++11
C++11 was one of the most significant updates in C++ history, introducing modern programming features.
- Lambda Expressions
- Auto Keyword
- nullptr
- Rvalue References
- Variadic Templates
- Multithreading Support
- Smart Pointers
2014 -> C++14
C++14 focused on improving and extending features introduced in C++11.
- Generic Lambdas
- Variable Templates
- Binary Literals
- Improved constexpr Support
2017 -> C++17
C++17 enhanced developer productivity and simplified code writing.
- Fold Expressions
- Structured Bindings
- Inline Variables
- Filesystem Library
2020 -> C++20
C++20 was a major modernization release that introduced powerful language and library improvements.
- Concepts
- Ranges Library
- Coroutines
- Modules
- Three-Way Comparison Operator (<=>)
- Calendar and Timezone Library
2023 -> C++23
C++23 is the latest published C++ standard, focusing on usability, performance, and library enhancements.
- Enhanced Standard Library
- Better Formatting Utilities
- Additional Ranges Support
- Improved Language Consistency and Performance
Why Was C++ Created?
Bjarne Stroustrup wanted to combine the speed and efficiency of C with the object-oriented capabilities of the Simula language. The primary goals of C++ were:
- Preserve the performance of C.
- Add object-oriented programming features.
- Improve code reusability and maintainability.
- Support the development of large-scale software applications.
Summary Table of history of various C++ versions:
| Version | Release Date | Major changes |
|---|---|---|
| C++98 (ISO/IEC 14882:1998) | October 1998 | The first version |
| C++03 (ISO/IEC 14882:2003) | February 2003 | Introduction of value initialization. |
| C++11 | August 2011 | Introduction of Lambda Expressions, Delegating Constructors, Uniform Initialization Syntax, nullptr, Automatic Type Deduction and decltype, Rvalue References etc. |
| C++14 | August 2014 | Introduction of polymorphic lambdas, digit separators, generalized lambda capture, variable templates, binary integer literals, quoted strings etc. |
| C++17 | December 2017 | Introduction of fold expressions, hexadecimal floating point literals, a u8 character literal, selection statements with initializer, inline variables etc. |
| C++20 | March 2020 | This update extends C++ with the facilities to inspect program entities such as variables, enumerations, classes and their members, lambdas and their captures, etc. |
| C++23 | Future Release | The next major revision of the C++ standard |