The origin of C++ is one of the most remarkable chapters in computing history. In 1979, Bjarne Stroustrup was working on his Ph.D. thesis at Bell Labs analyzing distributed computer systems. He needed a tool that combined the high-level modeling capabilities of Simula 67 with the raw execution speed and hardware control of the C language.
In 1979, Stroustrup started developing C with Classes as an extension to Dennis Ritchie's C language. His primary objective was to add object-oriented concepts like classes, member functions, access control, and derived classes without sacrificing any performance or portability.
In 1983, the language was officially rechristened C++. The ++ operator represents the increment operator in C, signifying that C++ is an evolved version of C while maintaining backward compatibility.
| ISO Standard | Year | Popular Nickname | Major Additions & Impact |
|---|---|---|---|
| ISO/IEC 14882:1998 | 1998 | C++98 | First standardized edition. Standardized templates, RTTI, namespaces, and the Standard Template Library (STL) designed by Alex Stepanov. |
| ISO/IEC 14882:2003 | 2003 | C++03 | Technical bug fix release; resolved subtle ambiguities in template instantiation and standard library specifications. |
| ISO/IEC 14882:2011 | 2011 | C++11 (Modern C++) | Massive revolutionary upgrade: Move semantics (rvalues), auto, smart pointers (unique_ptr), lambda expressions, nullptr, <thread>, range-for loops. |
| ISO/IEC 14882:2014 | 2014 | C++14 | Refinements to C++11: Generic lambdas, std::make_unique, relaxed constexpr rules, binary literals (0b1010). |
| ISO/IEC 14882:2017 | 2017 | C++17 | Structured bindings (tuple unpacking), std::string_view, std::optional, std::filesystem, if constexpr, parallel STL algorithms. |
| ISO/IEC 14882:2020 | 2020 | C++20 (The Giant) | Four big pillars: Concepts (type constraints), Ranges (piping |), Modules (replacing #include), and Coroutines (co_await). Plus std::jthread, consteval. |
| ISO/IEC 14882:2023 | 2023 | C++23 | Deducing this, std::print / std::println, monadic operations for std::optional, std::mdspan multidimensional arrays. |
Exam Question: "Who developed C++ and why is it called an incremental language?"
Answer Key: Developed by Bjarne Stroustrup at AT&T Bell Labs in 1979. Named 'C++' by Rick Mascitti in 1983 because '++' is the unary increment operator in C, indicating C++ extends C with OOP without losing C's hardware efficiency.
Boost your C++ proficiency by studying these closely connected core modules:
Introduction and roadmap of the complete C++ course.
Installing modern compilers on Windows, Linux, and Mac.
Comprehensive breakdown of C++11 through C++23.
How source code translates to binary machine instructions.