This repository contains my implementation of the 42 Network C++ Modules, a progressive introduction to modern C++ programming with a strong focus on Object-Oriented Programming (OOP), memory management, and advanced language features.
Throughout these modules, I built a deep understanding of C++ from fundamentals to advanced concepts such as polymorphism, inheritance, templates, STL, and algorithmic problem solving.
The C++ modules are designed to progressively teach the core principles of C++ and Object-Oriented Programming through practical exercises.
Each module introduces new concepts while reinforcing previous knowledge.
- Namespaces and scope management
- Classes and object-oriented design
- Constructors and destructors
- Member functions and encapsulation
- Memory allocation (stack vs heap)
- Pointers and references
- File streams and basic I/O
- Deep understanding of OOP principles
- Encapsulation, abstraction, inheritance, polymorphism
- Operator overloading
- Canonical form (Rule of 3 / Rule of 5 concepts awareness)
- Class relationships (composition & aggregation)
- Abstract classes and interfaces
- Subtype polymorphism
- Virtual functions and runtime polymorphism
- Exception handling (try / catch / throw)
- Type casting (static, dynamic, reinterpret, const_cast)
- Memory safety and controlled object behavior
- Function and class templates
- Generic programming concepts
- Code reuse through abstraction
- Compile-time polymorphism
- Standard Template Library (STL)
- Containers (vector, map, stack, etc.)
- Iterators and algorithm usage
- Data structure manipulation
- Sorting and searching algorithms
- Algorithmic thinking and optimization
In the final module, I implemented and worked with:
- Efficient sorting algorithms (hybrid approaches)
- Container-based data manipulation
- Performance-aware algorithm design
- Input parsing and large dataset processing
- Language: C++98 standard
- Paradigm: Object-Oriented Programming (OOP)
- STL (Standard Template Library)
- Unix-based compilation (Makefiles)
- Memory management without modern smart pointers (manual control)