This repository contains my progress through the C++ modules from 42 School, implemented in C++98.
It showcases fundamental concepts of Object-Oriented Programming (OOP), memory management, and good coding practices following Clean Code principles.
- Build and Debug - Compilers, debugging and C++ standards
- Dependencies and Tools - Makefile, CMake and library management
- CppUnit Installation - Local installation without root permissions
- CppUnit Quickstart - First steps with unit testing
- Complete CppUnit Guide - Complete CppUnit documentation for C++98
- Object-Oriented Programming (OOP)
- Encapsulation, Abstraction, Inheritance and Polymorphism
- Dynamic memory management in C++98
- Function and operator overloading
- Abstract classes vs Interfaces
- Best practices with Makefile and compilation flags
- Standard I/O (
iostream) - Using
new/delete - Introduction to dynamic memory
- Namespaces and basic classes
- Member functions and methods
- Standard I/O (
iostream) - Basic classes (
PhoneBook,Contact) - Using
new/delete
- Pointers and references
- Stack vs Heap
- Constructors and destructors
- Exercises with objects (
Zombie,Weapon,Human)
- Operator overloading
- Copy, assignment and object lifetime
- Fixed-point number implementation
- Encapsulation best practices
- Base and derived classes
- Single and multiple inheritance
virtualkeyword and diamond problem- Exercises with
ClapTrap,ScavTrap,FragTrap,DiamondTrap
- Dynamic polymorphism
virtualmethods andoverride- Abstract classes and interfaces
- Composition vs aggregation (
Animal,Brain,Cat,Dog) - Magical materials (
AMateria,Cure,Ice,Character,MateriaSource)
- C++98 - Programming standard
- Makefile - Build system
- CMake - Build system generator
- CppUnit - Unit testing framework
- GDB - Debugger
- Valgrind - Memory analysis tool
- Git - Version control
- Continue with modules cpp05 – cpp09
- Add UML diagrams for each module
- Improve testing with
assertanddoctest - Implement more design patterns
- Add performance benchmarks
This repository is part of my learning journey at 42 School. Contributions and suggestions are welcome to improve documentation and examples.
This project is part of the 42 School curriculum and is intended solely for educational purposes.