**1.1 History and Evolution of C++:**
C++ is a general-purpose programming language that was created as an extension of the C
programming language. It was developed by Bjarne Stroustrup at Bell Labs in the early
1980s. Stroustrup wanted to enhance C with features for object-oriented programming
(OOP) while maintaining compatibility with existing C code.
1.1.1 The Birth of C++:
- In the early 1980s, Bjarne Stroustrup started working on what would become C++. He
aimed to combine the efficiency and low-level capabilities of C with high-level abstractions
and the power of OOP.
- Stroustrup's early work on C++ involved adding classes, derived classes, strong type
checking, and other OOP features to C. He also introduced the concept of "C with Classes"
as an intermediate language.
1.1.2 Standardisation of C++:
- In 1983, the first edition of "The C++ Programming Language" by Bjarne Stroustrup was
published, providing a comprehensive reference for the language.
- The language continued to evolve, and Stroustrup started working with a committee to
standardise C++. In 1998, the first international standard for C++ known as C++98 (or
ISO/IEC 14882:1998) was published.
- Subsequent revisions, such as C++03, C++11, C++14, C++17, and C++20, brought new
features, improvements, and better support for modern programming practices.
1.1.3 C++ Today:
- C++ remains a widely used programming language in various domains, including systems
programming, game development, embedded systems, high-performance computing, and
more.
- The C++ language continues to evolve, with regular updates and new standards being
developed to address emerging needs and improve the language.
**1.2 Key Features and Advantages of C++:**
1.2.1 Object-Oriented Programming (OOP):
- C++ provides robust support for object-oriented programming concepts such as classes,
objects, inheritance, polymorphism, and encapsulation. These features enable the
organisation and modularization of code, making it easier to manage and reuse.
1.2.2 Efficiency and Performance:
- C++ is known for its efficiency and low-level capabilities. It allows direct memory
manipulation, fine-grained control over resources, and efficient use of hardware. This makes
it suitable for performance-critical applications and systems programming.
1.2.3 Standard Template Library (STL):