This repository contains various "CPP Modules" projects that are part of the École 42 curriculum.
This project contains 9 modules on the fundamentals of C++. The goal of these modules is to introduce students to Object-Oriented Programming, which many languages use. We learn C++ because it’s derived from C, the language in which we learned the core concepts of programming and the one we used in all previous projects at 42. In fact, because this is a complex language with many new things to learn, and to keep things simple, we must code and comply with the C++98 standard. We are going to discover new concepts step-by-step as the exercises progressively increase in complexity (wiki)
- In addition to being required to use the 98 standard in all exercises, we can’t use any other external libraries. It means C++11 (and derived forms) and Boost libraries are forbidden The following functions are forbidden too: *printf(), *alloc() and free().
- Using namespace <ns_name> and friend keywords are forbidden.
- We are allowed to use the STL in the Module 08 and 09 only. That means: no Containers (vector/list/map/and so forth) and no Algorithms (anything that requires to include the header) until then.
- From Module 02 to Module 09, your classes must be designed in the Orthodox Canonical Form, except when explicitely stated otherwise.
0️⃣ Module 00 (wiki)
The grade in this module is 100/100 ✅
This first module of C++ is designed to help you understand the specifities of the language when compared to C. Some new concepts we are going to learn in this modelue are:
- Namespaces
- Classes
- Member attributes & functions
- Stdio streams
- This pointer
- Initialization lists
- Accessor & getters
- Static and const
- Some other basic stuff
1️⃣ Module 01 (wiki)
The grade in this module is 100/100 ✅
This module is designed to help you understand:
- Memory allocation - new & delete
- References
- Pointers to members
- Lifetime
- Scope
- Switch statement
2️⃣ Module 02 (wiki)
The grade in this module is 100/100 ✅
This module is designed to help you understand:
- Ad-hoc polymorphism
- Operator overloading
- Orthodox canonical class form
3️⃣ Module 03 (wiki)
The grade in this module is 100/100 ✅
This module is designed to help you understand:
- Inheritance
- Access specifier
- Multiple inheritance
- Diamond problem
4️⃣ Module 04 (wiki)
The grade in this module is 100/100 ✅
This module is designed to help you understand:
- Subtype polymorphism
- Abstract classes
- Virtual keyword
- Interfaces
5️⃣ Module 05 (wiki)
The grade in this module is 100/100 ✅
This module is designed to help you understand:
- Try/Catch
- Exceptions
6️⃣ Module 06 (wiki)
The grade in this module is 100/100 ✅
This module is designed to help you understand C++ casts:
- static_cast
- dynamic_cast
- const_cast
- reinterpret_cast
7️⃣ Module 07 (wiki)
The grade in this module is 100/100 ✅
This module is designed to help you understand:
- Templates
8️⃣ Module 08 (wiki)
The grade in this module is 100/100 ✅
This module is designed to help you understand:
- Templated containers
- Iterators
- Algorithms
The grade in this module is 100/100 ✅
This module is designed to apply, in a more complex way through a series of exercises, not only what was learned in module 08 but also everything from the other modules. Ultimately, it serves as a compendium.