All modules are fully implemented in strict C++98 as per 42 school requirements.
Step-by-step mastery of C++ concepts and OOP principles
About · Usage · What I Learned
All projects in this repository are developed using strict C++98 standard, without any newer language features.
The Orthodox Canonical Form (implementing default constructor, copy constructor, assignment operator, and destructor) is emphasized and required in Module 02 and onwards.
Below are short descriptions of each module (00 to 09):
Introduction to C++ syntax, data types, namespaces, and basic object-oriented programming. Focuses on understanding compilation, headers, and basic class structures.
Covers dynamic memory allocation (heap vs stack), references, pointers, and basic resource management. Emphasizes the importance of constructors, destructors, and memory safety.
Introduces operator overloading, function overloading, and basic usage of templates. Focuses on creating user-friendly classes and utilities with custom operators.
Explores inheritance (single and multiple), access specifiers, and polymorphic behavior. Orthodox Canonical Form (default constructor, copy constructor, copy assignment operator, and destructor) is a key requirement for all main classes.
Deep dive into abstract classes, pure virtual functions, interfaces, and runtime polymorphism. OCF compliance continues to be crucial for robust, reusable code.
Introduces C++ exception handling using try/catch blocks, custom exception classes, and safe error propagation. Emphasizes robust and maintainable code.
Covers type casting (static, dynamic, const, reinterpret), serialization basics, and safe conversions. Practices advanced manipulation of object types and memory.
Introduces class and function templates, STL containers, and iterators. Encourages generic programming and code reuse with type-safe abstractions.
Deepens understanding of STL containers (vector, stack, map, etc.) and standard algorithms. Focuses on efficient data manipulation and algorithm design in modern C++.
Explores smart pointers, resource management patterns, and implements the Ford-Johnson algorithm (Merge-Insertion Sort) as a main challenge. All solutions are crafted in C++98.
Each module is a standalone project. To compile and run a module, navigate to its directory and use:
$ make
./<executable>- C++ syntax and best practices under C++98 constraints
- Orthodox Canonical Form (OCF) and its importance in class design
- Object-oriented programming and design patterns
- Memory management and resource safety
- Exception handling and robust code structure
- Advanced C++ features and STL usage
- Ford-Johnson (Merge-Insertion) algorithm (Module 09) where I improved my coding skills implementing a complex algorithm