Welcome to the C++ Modules repository, a series of projects designed to deepen your understanding of the C++ programming language. Through these modules, you will progressively explore the core concepts, features, and best practices of modern C++ development.
The C++ Modules are divided into 10 separate projects, each focusing on a specific aspect of the language. These modules are designed to build upon one another, gradually increasing in complexity and challenging you to write efficient, robust, and well-structured code.
- Objective: Learn the syntax and basic concepts of C++, including namespaces, classes, member functions, stdio streams, and file I/O.
- Key Topics:
- C++ syntax and structure.
- Creating and manipulating classes.
- File handling and streams.
- Objective: Understand dynamic memory allocation, pointers, references, and the Rule of Three.
- Key Topics:
- Pointers and references.
- Memory allocation (
new,delete). - Rule of Three: Copy constructor, destructor, and copy assignment operator.
- Objective: Explore polymorphism, operator overloading, and exception handling in C++.
- Key Topics:
- Function and operator overloading.
- Exceptions and error handling.
- Inheritance basics.
- Objective: Delve deeper into inheritance, abstract classes, and virtual functions.
- Key Topics:
- Abstract base classes.
- Virtual functions and overriding.
- Upcasting and downcasting.
- Objective: Work with interfaces, polymorphism, and dynamic casting.
- Key Topics:
- Pure virtual functions.
- Interfaces in C++.
- Dynamic casting (
dynamic_cast).
- Objective: Learn about templates, generic programming, and standard containers.
- Key Topics:
- Function templates and class templates.
- Iterators and standard containers (
vector,list,map, etc.). - STL algorithms.
- Objective: Master exception handling and understand the RAII (Resource Acquisition Is Initialization) idiom.
- Key Topics:
- Advanced exception handling.
- RAII and smart pointers.
- Exception safety.
- Objective: Work with advanced templates, including specialization and template metaprogramming.
- Key Topics:
- Template specialization.
- SFINAE (Substitution Failure Is Not An Error).
- Variadic templates.
- Objective: Dive deeper into the Standard Template Library (STL), focusing on containers, iterators, and algorithms.
- Key Topics:
- Advanced use of STL containers.
- Writing custom iterators.
- STL algorithms (
find,sort,transform, etc.).
- Objective: Learn how to serialize and deserialize data in C++, including working with streams and files.
- Key Topics:
- Serialization and deserialization techniques.
- File streams and binary files.
- Practical use cases for data storage.