{"id":15047173,"url":"https://github.com/pin3dev/42_cpp_modules_00-04","last_synced_at":"2026-02-11T04:32:03.626Z","repository":{"id":230903534,"uuid":"775422204","full_name":"pin3dev/42_CPP_Modules_00-04","owner":"pin3dev","description":"Exploring advanced C++ and OOP concepts like abstraction, encapsulation, simple and multiple inheritance, polymorphism, interfaces, and so on","archived":false,"fork":false,"pushed_at":"2024-08-28T12:33:45.000Z","size":2897,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-31T09:47:32.023Z","etag":null,"topics":["42","42-cpp-module","42-cpp-modules","42born2code","42cursus","42porto","42projects","42school","cpp","cpp-course","cpp-modules","cpp-modules-1337","cpp-modules-42","cpp-project","cpp98","cpp98-compatible","doxygen","doxygen-documentation","tutorial"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pin3dev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-03-21T11:08:35.000Z","updated_at":"2024-08-28T12:33:48.000Z","dependencies_parsed_at":"2024-08-28T12:47:57.807Z","dependency_job_id":"71f6b6e3-7659-4dc3-97d0-6d6da072ac96","html_url":"https://github.com/pin3dev/42_CPP_Modules_00-04","commit_stats":null,"previous_names":["pin3dev/42_cpp_modules_00-04"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/pin3dev/42_CPP_Modules_00-04","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pin3dev%2F42_CPP_Modules_00-04","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pin3dev%2F42_CPP_Modules_00-04/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pin3dev%2F42_CPP_Modules_00-04/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pin3dev%2F42_CPP_Modules_00-04/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pin3dev","download_url":"https://codeload.github.com/pin3dev/42_CPP_Modules_00-04/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pin3dev%2F42_CPP_Modules_00-04/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270611821,"owners_count":24616072,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-15T02:00:12.559Z","response_time":110,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["42","42-cpp-module","42-cpp-modules","42born2code","42cursus","42porto","42projects","42school","cpp","cpp-course","cpp-modules","cpp-modules-1337","cpp-modules-42","cpp-project","cpp98","cpp98-compatible","doxygen","doxygen-documentation","tutorial"],"created_at":"2024-09-24T20:55:05.025Z","updated_at":"2026-02-11T04:32:03.612Z","avatar_url":"https://github.com/pin3dev.png","language":"C++","readme":"# CPP-Modules_00-04 `100/100`\n\n## Table of Contents\n- [Project Overview](#overview)\n- [Modules Guidelines](#guidelines)\n- [Mandatory and Bonus Features](#features)\n- [Execution](#execution)\n- [To Study](#Links2Study)\n\n\n## Overview\nThe `cpp_modules_00-04` projects revolves around mastering advanced C++ concepts such as:\n- Abstraction\n- Encapsulation\n- Simple and multiple inheritance\n- Polymorphism\n- Interfaces\n- Fixed Point and Floating Point Number Representations\n- Overload Operators\n\n## Guidelines\n\n### Compilation:\n\n- Compile your code using `c++` with flags `-Wall` `-Wextra` `-Werror` `-std=c++98`\n- Exercise directories: `ex00`, `ex01`, ..., `exn`\n- Separate `Makefile` within each exercise directory.\n- Use `UpperCamelCase` for class names.\n\n### Forbidden:\n\n- Functions: `*printf()`, `*alloc()`, `free()`\n- External libraries like `C++11`, `Boost`\n- Using `namespace \u003cns_name\u003e` and `friend` keywords.\n- Until you reach the Module 08: `STL`, meaning no Containers (`vector` `list` `map` and so forth) and no Algorithms (anything that requires to include the `\u003calgorithm\u003e` header).\n- `Memory leaks` when using `new`.\n- Function `implementations in header` files (except for function templates).\n\n### Allowed:\n\n- Use `standard library` extensively.\n- `Additional files` allowed if necessary.\n\n### Rule:\nFollow the `Orthodox Canonical Form` for classes `Modules 02-09`, which must implement four essential member functions:\n- Default constructor\n- Copy constructor\n- Copy assignment operator\n- Destructor\n- Split class code into two files: Header file `.hpp/.h` for class definition, and Source file `.cpp` for implementation\n\n## Features\n\n### [Module 00](https://github.com/pin3dev/42_CPP_Modules_00-04/tree/main/CPP_00): String class, Abstraction, Encapsulation\n  \n### [Module 01](https://github.com/pin3dev/42_CPP_Modules_00-04/tree/main/CPP_01): Memory Allocation, References vs Pointers, Switch cases and Callbacks Functions  \n  \n### [Module 02](https://github.com/pin3dev/42_CPP_Modules_00-04/tree/main/CPP_02): Orthodox Canonical Form, Fixed-point Number Class implementation, Overload Operators\n\n### [Module 03](https://github.com/pin3dev/42_CPP_Modules_00-04/tree/main/CPP_03): Abstract Classes, Single Inheritance, Multiple Inheritance, Diamond Inheritance\n  \n### [Module 04](https://github.com/pin3dev/42_CPP_Modules_00-04/tree/main/CPP_04): Polymorphism and Interfaces\n\n## Execution\nEach exercise's compilation is done separately by running the Makefile within the exercise's folder.  \n```bash\n#in the ex00, ex01, ex02 or ex03 directory\n$\u003emake\n```\n\n## Links2Study\n\n| Grade |Modules|Lang | Type| Links and Subjects |\n|:---------:|-------|:---:|:---:|--------------------|\n|🤩|`CPP00` `CPP04` | 🇺🇸 | 📄📚|[Standard Library Headers](https://en.cppreference.com/w/cpp/header)|  \n|⭐|`CPP00`         | 🇺🇸 | 💭 | [char* vs std:string](https://stackoverflow.com/questions/15738095/what-is-the-exact-technical-difference-between-const-char-and-const-string)|  \n|🤩|`CPP00`         | 🇺🇸 | 📄 |[char* vs std:string vs char[]](https://www.geeksforgeeks.org/char-vs-stdstring-vs-char-c/)|  \n|✅|`CPP00`         | 🇧🇷 | 📄 |[CHAR * VS STD: STRING VS CHAR [] EM C++](https://acervolima.com/char-vs-std-string-vs-char-em-c/)|  \n|✅|`CPP00` `CPP04` | 🇺🇸 | 📄 |[Complete OOP Concepts](https://medium.com/@varshithabittu96/complete-oop-concepts-using-c-to-crack-any-interview-with-code-and-real-time-examples-237234559eb2)|  \n|✅|`CPP00` `CPP04` | 🇺🇸 | 📄 |[OOPs Concepts in C++](https://beginnersbook.com/2017/08/cpp-oops-concepts/)|  \n|✅|`CPP01`         | 🇺🇸 | 📄 |[A Comprehensive Look at C++ Reference](https://www.simplilearn.com/tutorials/cpp-tutorial/cpp-reference)|  \n|⭐|`CPP02`         | 🇺🇸 | 📄 |[Fixed Point and Floating Point Number Representations](https://www.tutorialspoint.com/fixed-point-and-floating-point-number-representations)|  \n|⭐|`CPP02`         | 🇺🇸 | 📄 |[Floating point number representation](https://www.cprogramming.com/tutorial/floating_point/understanding_floating_point_representation.html)|  \n|🤩|`CPP02`         | 🇺🇸 | 📄 |[Introduction to Fixed Point Number Representation](https://inst.eecs.berkeley.edu/~cs61c/sp06/handout/fixedpt.html)|  \n|🤩|`CPP02` `CPP04` | 🇺🇸 | 📄 |[Operator Overloading in C++](https://www.geeksforgeeks.org/operator-overloading-cpp/)|  \n|⭐|`CPP02` `CPP04` | 🇺🇸 | 📄 |[C++ Overloading (Operator and Function)](https://www.tutorialspoint.com/cplusplus/cpp_overloading.htm)|  \n|🤩|`CPP02` `CPP04` | 🇺🇸 | 📄 |[Types of Operator Overloading in C++](https://www.geeksforgeeks.org/types-of-operator-overloading-in-cpp/?ref=lbp)|  \n|⭐⭐|`CPP02` `CPP04`| 🇺🇸 | 📄 |[Copy Constructor vs Assignment Operator in C++](https://www.geeksforgeeks.org/copy-constructor-vs-assignment-operator-in-c/?ref=ml_lbp)|  \n|⭐|`CPP03` `CPP04`| 🇺🇸 | 📄 |[Inheritance in C++](https://www.geeksforgeeks.org/inheritance-in-c/)|  \n|⭐|`CPP03` `CPP04`| 🇺🇸 | 💭 |[C++ inheritance downcasting](https://stackoverflow.com/questions/11855018/c-inheritance-downcasting)|  \n|⭐⭐|`CPP04`       | 🇺🇸 | 📄 |[Interfaces in C++](https://medium.com/@sumana.dotnettricks/interfaces-in-c-exploring-the-key-concepts-and-implementation-techniques-c1b3b9e0cb7e)|  \n|⭐|`CPP04`       | 🇺🇸 | 📄 |[C++ Program to Create an Interface](https://www.geeksforgeeks.org/cpp-program-to-create-an-interface/)|  \n\n\n\u003e ✅ OK | ⭐ Good | ⭐⭐ VeryGood | 🤩 Amazing | 🔖 Bookmarked2Read  \n\u003e 📄 Blog | 💭 Chat | 📹 Video | 📚 Book\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpin3dev%2F42_cpp_modules_00-04","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpin3dev%2F42_cpp_modules_00-04","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpin3dev%2F42_cpp_modules_00-04/lists"}