Welcome to the 42 C++ Modules repository! This project is a part of the 42 Cursus and is designed to progressively introduce and deepen the understanding of the C++ programming language—from its most basic syntax and OOP principles to advanced topics like templates, STL, and performance optimization.
Each module builds upon the knowledge of the previous one, reinforcing C++ fundamentals while exploring new concepts.
Here’s a high-level summary of what you’ll find in each module:
- Introduction to C++ syntax, namespaces, and I/O streams.
- Understanding basic classes, member functions, and attributes.
- First look at OOP in C++.
- Stack vs heap, pointers, and references.
- File I/O and working with streams.
- Deeper exploration of object handling.
- Operator overloading and fixed-point arithmetic.
- Introduction to static polymorphism and class interactions.
- Creating base and derived classes.
- Constructors, destructors, and the importance of inheritance.
- Pure virtual functions, interfaces, and deep copies.
- Dynamic polymorphism with base class references/pointers.
- Custom exceptions and safe error handling.
- More operator overloading with practical use cases.
- Casting (
static_cast
,dynamic_cast
, etc.) and runtime type identification. - Polymorphism safety and serialization logic.
- Function and class templates.
- Generic programming and type-agnostic utilities.
- Using
vector
,list
,deque
, and iterators. - Functors, algorithms, and container-based design.
- Parsing and sorting with
list
,deque
, andmap
. - Time complexity awareness and performance comparison.
Each module is organized into its own folder:
/CPP00
/CPP01
...
/CPP09
Each module contains a README.md
explaining its goals, topics, and exercises, along with the source code.
- C++98 standard compliance.
- Use
make
for all compilations. - Proper memory management (no leaks).
- Follow the Orthodox Canonical Form where required.
This repository is not only a learning journey through the C++ language but also a solid preparation for real-world development. By the end of CPP09, you’ll have touched most of the foundational and intermediate concepts in C++.