Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/pin3dev/42_cpp_modules_00-04
Exploring advanced C++ and OOP concepts like abstraction, encapsulation, simple and multiple inheritance, polymorphism, interfaces, and so on
https://github.com/pin3dev/42_cpp_modules_00-04
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
Last synced: about 1 month ago
JSON representation
Exploring advanced C++ and OOP concepts like abstraction, encapsulation, simple and multiple inheritance, polymorphism, interfaces, and so on
- Host: GitHub
- URL: https://github.com/pin3dev/42_cpp_modules_00-04
- Owner: pin3dev
- Created: 2024-03-21T11:08:35.000Z (9 months ago)
- Default Branch: main
- Last Pushed: 2024-08-28T12:33:45.000Z (4 months ago)
- Last Synced: 2024-09-29T23:23:55.003Z (3 months ago)
- 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
- Language: C++
- Homepage:
- Size: 2.76 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# CPP-Modules_00-04 `100/100`
## Table of Contents
- [Project Overview](#overview)
- [Modules Guidelines](#guidelines)
- [Mandatory and Bonus Features](#features)
- [Execution](#execution)
- [To Study](#Links2Study)## Overview
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## Guidelines
### Compilation:
- Compile your code using `c++` with flags `-Wall` `-Wextra` `-Werror` `-std=c++98`
- Exercise directories: `ex00`, `ex01`, ..., `exn`
- Separate `Makefile` within each exercise directory.
- Use `UpperCamelCase` for class names.### Forbidden:
- Functions: `*printf()`, `*alloc()`, `free()`
- External libraries like `C++11`, `Boost`
- Using `namespace ` and `friend` keywords.
- 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 `` header).
- `Memory leaks` when using `new`.
- Function `implementations in header` files (except for function templates).### Allowed:
- Use `standard library` extensively.
- `Additional files` allowed if necessary.### Rule:
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/.h` for class definition, and Source file `.cpp` for implementation## Features
### [Module 00](https://github.com/pin3dev/42_CPP_Modules_00-04/tree/main/CPP_00): String class, Abstraction, Encapsulation
### [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
### [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### [Module 03](https://github.com/pin3dev/42_CPP_Modules_00-04/tree/main/CPP_03): Abstract Classes, Single Inheritance, Multiple Inheritance, Diamond Inheritance
### [Module 04](https://github.com/pin3dev/42_CPP_Modules_00-04/tree/main/CPP_04): Polymorphism and Interfaces## Execution
Each exercise's compilation is done separately by running the Makefile within the exercise's folder.
```bash
#in the ex00, ex01, ex02 or ex03 directory
$>make
```## Links2Study
| Grade |Modules|Lang | Type| Links and Subjects |
|:---------:|-------|:---:|:---:|--------------------|
|π€©|`CPP00` `CPP04` | πΊπΈ | ππ|[Standard Library Headers](https://en.cppreference.com/w/cpp/header)|
|β|`CPP00` | πΊπΈ | π | [char* vs std:string](https://stackoverflow.com/questions/15738095/what-is-the-exact-technical-difference-between-const-char-and-const-string)|
|π€©|`CPP00` | πΊπΈ | π |[char* vs std:string vs char[]](https://www.geeksforgeeks.org/char-vs-stdstring-vs-char-c/)|
|β |`CPP00` | π§π· | π |[CHAR * VS STD: STRING VS CHAR [] EM C++](https://acervolima.com/char-vs-std-string-vs-char-em-c/)|
|β |`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)|
|β |`CPP00` `CPP04` | πΊπΈ | π |[OOPs Concepts in C++](https://beginnersbook.com/2017/08/cpp-oops-concepts/)|
|β |`CPP01` | πΊπΈ | π |[A Comprehensive Look at C++ Reference](https://www.simplilearn.com/tutorials/cpp-tutorial/cpp-reference)|
|β|`CPP02` | πΊπΈ | π |[Fixed Point and Floating Point Number Representations](https://www.tutorialspoint.com/fixed-point-and-floating-point-number-representations)|
|β|`CPP02` | πΊπΈ | π |[Floating point number representation](https://www.cprogramming.com/tutorial/floating_point/understanding_floating_point_representation.html)|
|π€©|`CPP02` | πΊπΈ | π |[Introduction to Fixed Point Number Representation](https://inst.eecs.berkeley.edu/~cs61c/sp06/handout/fixedpt.html)|
|π€©|`CPP02` `CPP04` | πΊπΈ | π |[Operator Overloading in C++](https://www.geeksforgeeks.org/operator-overloading-cpp/)|
|β|`CPP02` `CPP04` | πΊπΈ | π |[C++ Overloading (Operator and Function)](https://www.tutorialspoint.com/cplusplus/cpp_overloading.htm)|
|π€©|`CPP02` `CPP04` | πΊπΈ | π |[Types of Operator Overloading in C++](https://www.geeksforgeeks.org/types-of-operator-overloading-in-cpp/?ref=lbp)|
|ββ|`CPP02` `CPP04`| πΊπΈ | π |[Copy Constructor vs Assignment Operator in C++](https://www.geeksforgeeks.org/copy-constructor-vs-assignment-operator-in-c/?ref=ml_lbp)|
|β|`CPP03` `CPP04`| πΊπΈ | π |[Inheritance in C++](https://www.geeksforgeeks.org/inheritance-in-c/)|
|β|`CPP03` `CPP04`| πΊπΈ | π |[C++ inheritance downcasting](https://stackoverflow.com/questions/11855018/c-inheritance-downcasting)|
|ββ|`CPP04` | πΊπΈ | π |[Interfaces in C++](https://medium.com/@sumana.dotnettricks/interfaces-in-c-exploring-the-key-concepts-and-implementation-techniques-c1b3b9e0cb7e)|
|β|`CPP04` | πΊπΈ | π |[C++ Program to Create an Interface](https://www.geeksforgeeks.org/cpp-program-to-create-an-interface/)|> β OK | β Good | ββ VeryGood | π€© Amazing | π Bookmarked2Read
> π Blog | π Chat | πΉ Video | π Book