On this page
In Kerala, the SCERT Class XI Computer Science textbook has a unit called “Introduction to C++ Programming”. The language in that chapter began in a New Jersey lab in 1979, with one idea: give C classes, so programmers can build their own types. Here is how it happened, and how to learn the idea the way its designer did.
Who created C++, and where?
Bjarne Stroustrup is the designer and original implementer of C++, according to his official biography. Born in Aarhus, Denmark, in 1950, he finished a PhD at Cambridge in 1979 and joined Bell Telephone Laboratories in New Jersey that year.
Bell Labs was also the home of C. Stroustrup's FAQ says that at the time he considered C the best systems programming language available, and that he had experts such as Dennis Ritchie and Brian Kernighan down the corridor to learn from. Our story of how Ken Thompson created Unix at Bell Labs covers the operating system that C grew up with.
Why did Stroustrup add classes to C?
In his paper “A History of C++: 1979–1991”, Stroustrup describes a simulator he wrote for his PhD. He first wrote it in Simula, a language with classes, which let him put the ideas of his problem straight into code. But it ran far too slowly: more than 80% of the time went to the garbage collector. He rewrote it in BCPL, which ran fast enough, but coding and debugging in it was, in his word, “horrible”.
In April 1979 at Bell Labs, studying how the UNIX kernel could be spread over a network, he wanted a better tool. The paper's first sentence sums up his goal: “C++ was designed to provide Simula's facilities for program organization together with C's efficiency and flexibility for systems programming.”
Speed was not negotiable: when someone showed a 3% drop in run-time efficiency compared with C, this “was considered unacceptable and the overhead promptly removed.”
What did “C with Classes” add to C?
By October 1979 Stroustrup had a pre-processor called Cpre that added Simula-like classes to C, his history records. Features of the first implementation in 1980 included:
classes and derived classes
public/private access control
constructors and destructors
type checking and conversion of function arguments
Inline functions, default arguments and overloading of the assignment operator followed in 1981. Stroustrup did not claim support for object-oriented programming until virtual functions arrived in C++ in 1983. His own definition is short: “A class is a user-defined data type.”
Our piece on Alan Kay's Dynabook and object-oriented programming tells how object-oriented ideas grew in another lab.
When did C with Classes become C++?
According to Stroustrup's FAQ, the first version of C++ was used inside AT&T in August 1983. The name C++ was coined by Rick Mascitti in the summer of 1983. The first commercial release came in October 1985, at the same time as the first edition of his book, The C++ Programming Language.
Today, the ISO C++ committee's site lists the current version as C++23, formally ISO/IEC 14882:2024.
Is C++ still taught in Indian schools?
It depends on your board. Kerala's SCERT Class XI Computer Science textbook teaches C++, with units on C++ programming and on data types and operators. It was written for the 2014-15 syllabus, so check it is still current. CBSE's Computer Science (083) syllabus for 2025-26 uses Python instead, and its Class XI practical asks for a report file of at least 20 Python programs.
Parents weighing Python at home can read our guide on whether a teenager should learn Python on their own.
How do you learn classes the way Stroustrup did?
In his history of C++, Stroustrup shows classes through a simple example from his 1980 report: a stack of characters, where the last one pushed in is the first out. Use it as a template for any class by answering five questions before writing code:
What is the thing? A stack of characters.
What data does it hold? An array of characters plus markers for the bottom, the top and the end of the space. Keep these private.
What may other code do with it? Push a character and pop a character. Make only these public.
What must be true from the start? A constructor sets the markers before the stack is first used. His paper says the constructor is guaranteed to be called to initialize every object before its first use.
Can you make two? Yes: s1 and s2 are separate stacks with their own data, built from one class.
If words like derived class, constructor and access control still blur together, the Fermi Concept Library has a lesson for every concept in computing, each placed on a map of related ideas. And if you don't know where to start, Fermi's AI tutor can work out what you already know and build a plan for the session.
Start with the stack: once you can explain it from memory, you understand what turned C into C++.



