The cpp_modules_00-04 projects revolves around mastering advanced C++ concepts such as:
- Abstraction
- Encapsulation
- Simple and multiple inheritance
- Polymorphism
- Interfaces
- Fixed Point and Floating Point Number Representations
- Overload Operators
- Compile your code using
c++with flags-Wall-Wextra-Werror-std=c++98 - Exercise directories:
ex00,ex01, ...,exn - Separate
Makefilewithin each exercise directory. - Use
UpperCamelCasefor class names.
- Functions:
*printf(),*alloc(),free() - External libraries like
C++11,Boost - Using
namespace <ns_name>andfriendkeywords. - Until you reach the Module 08:
STL, meaning no Containers (vectorlistmapand so forth) and no Algorithms (anything that requires to include the<algorithm>header). Memory leakswhen usingnew.- Function
implementations in headerfiles (except for function templates).
- Use
standard libraryextensively. Additional filesallowed if necessary.
Follow the Orthodox Canonical Form for classes Modules 02-09, which must implement four essential member functions:
- Default constructor
- Copy constructor
- Copy assignment operator
- Destructor
- Split class code into two files: Header file
.hpp/.hfor class definition, and Source file.cppfor implementation
Module 00: String class, Abstraction, Encapsulation
Module 01: Memory Allocation, References vs Pointers, Switch cases and Callbacks Functions
Module 02: Orthodox Canonical Form, Fixed-point Number Class implementation, Overload Operators
Module 03: Abstract Classes, Single Inheritance, Multiple Inheritance, Diamond Inheritance
Module 04: Polymorphism and Interfaces
Each exercise's compilation is done separately by running the Makefile within the exercise's folder.
#in the ex00, ex01, ex02 or ex03 directory
$>make| Grade | Modules | Lang | Type | Links and Subjects |
|---|---|---|---|---|
| 🤩 | CPP00 CPP04 |
🇺🇸 | 📄📚 | Standard Library Headers |
| ⭐ | CPP00 |
🇺🇸 | 💭 | char* vs std:string |
| 🤩 | CPP00 |
🇺🇸 | 📄 | char* vs std:string vs char[] |
| ✅ | CPP00 |
🇧🇷 | 📄 | CHAR * VS STD: STRING VS CHAR [] EM C++ |
| ✅ | CPP00 CPP04 |
🇺🇸 | 📄 | Complete OOP Concepts |
| ✅ | CPP00 CPP04 |
🇺🇸 | 📄 | OOPs Concepts in C++ |
| ✅ | CPP01 |
🇺🇸 | 📄 | A Comprehensive Look at C++ Reference |
| ⭐ | CPP02 |
🇺🇸 | 📄 | Fixed Point and Floating Point Number Representations |
| ⭐ | CPP02 |
🇺🇸 | 📄 | Floating point number representation |
| 🤩 | CPP02 |
🇺🇸 | 📄 | Introduction to Fixed Point Number Representation |
| 🤩 | CPP02 CPP04 |
🇺🇸 | 📄 | Operator Overloading in C++ |
| ⭐ | CPP02 CPP04 |
🇺🇸 | 📄 | C++ Overloading (Operator and Function) |
| 🤩 | CPP02 CPP04 |
🇺🇸 | 📄 | Types of Operator Overloading in C++ |
| ⭐⭐ | CPP02 CPP04 |
🇺🇸 | 📄 | Copy Constructor vs Assignment Operator in C++ |
| ⭐ | CPP03 CPP04 |
🇺🇸 | 📄 | Inheritance in C++ |
| ⭐ | CPP03 CPP04 |
🇺🇸 | 💭 | C++ inheritance downcasting |
| ⭐⭐ | CPP04 |
🇺🇸 | 📄 | Interfaces in C++ |
| ⭐ | CPP04 |
🇺🇸 | 📄 | C++ Program to Create an Interface |
✅ OK | ⭐ Good | ⭐⭐ VeryGood | 🤩 Amazing | 🔖 Bookmarked2Read
📄 Blog | 💭 Chat | 📹 Video | 📚 Book