Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/jotavare/cpp_modules

Exploring the essence of nine C++ modules.
https://github.com/jotavare/cpp_modules

abstraction algorithms cast classes containers cpp inheritance interfaces iterators members memory-allocation oop orthodox-canonical-class overloading pointers polymorphism templates try-catch

Last synced: 25 days ago
JSON representation

Exploring the essence of nine C++ modules.

Awesome Lists containing this project

README

        







Linkedin
42


About
Rules
Forbidden
Contributing
License

## ABOUT
| Resources | Description |
| :-- | :-- |
| **[References](https://github.com/jotavare/42-resources/tree/main?tab=readme-ov-file#cpp-modules-00-09)** | All the references i used to study C++. |

| Modules | Description |
| :-- | :-- |
| **[CPP 00](https://github.com/jotavare/cpp_modules/tree/main/cpp_modules)** | Understand the specificities of the language when compared to C. |
| **[CPP 01](https://github.com/jotavare/cpp_modules/tree/main/cpp_modules)** | Memory allocation, reference, pointers to members and the usage of the switch. |
| **[CPP 02](https://github.com/jotavare/cpp_modules/tree/main/cpp_modules)** | Ad-hoc polymorphism, overloads and orthodox canonical classes. |
| **[CPP 03](https://github.com/jotavare/cpp_modules/tree/main/cpp_modules)** | Inheritance. |
| **[CPP 04](https://github.com/jotavare/cpp_modules/tree/main/cpp_modules)** | Subtype polymorphism, abstract classes and interfaces. |
| **[CPP 05](https://github.com/jotavare/cpp_modules/tree/main/cpp_modules)** | Try/Catch and Exceptions. |
| **[CPP 06](https://github.com/jotavare/cpp_modules/tree/main/cpp_modules)** | Different casts. |
| **[CPP 07](https://github.com/jotavare/cpp_modules/tree/main/cpp_modules)** | Templates. |
| **[CPP 08](https://github.com/jotavare/cpp_modules/tree/main/cpp_modules)** | Templated containers, iterators and algorithms. |
| **[CPP 09](https://github.com/jotavare/cpp_modules/tree/main/cpp_modules)** | Containers. |

## RULES
```
- Compile with `c++` + `-Wall -Wextra -Werror` + `-std=c++98`;
- Exercise directories will be named: `ex00`, `ex01`, ... , `exn`;
- Class names in UpperCamelCase format;
- Files containing class code will always be named according to the class name;
- Output messages must be ended by a `\n` character (except when explicitly stated otherwise);
- No coding style is enforced in the C++ modules;
- You are allowed to use almost everything from the standard library;
```

## FORBIDDEN
```
- Can’t use any other external library;
- C++11 (and derived forms) and Boost libraries are forbidden;
- The following functions are forbidden too: `*printf()`, `*alloc()` and `free()`;
- Using namespace `` and friend keywords are forbidden;
- You are allowed to use the STL in the Modules 08 and 09 only. That means:
- No Containers (vector/list/map/and so forth);
- No Algorithms (anything that requires to include the `` header);
- When you allocate memory (by using the `new` keyword), you must avoid memory leaks;
- From Module 02 to Module 09, your classes must be designed in the Orthodox Canonical Form (except when explicitly stated otherwise);
- Any function implementation put in a header file (except for function templates) means 0 to the exercise;
- You should be able to use each of your headers independently from others. They must include all the dependencies they need;
- You must avoid the problem of double inclusion by adding include guards;
```

## CONTRIBUTING

If you find any issues or have suggestions for improvements, feel free to fork the repository and open an issue or submit a pull request.

## LICENSE

This project is available under the MIT License. For further details, please refer to the [LICENSE](https://github.com/jotavare/cpp_modules/blob/master/LICENSE) file.