Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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.
- Host: GitHub
- URL: https://github.com/jotavare/cpp_modules
- Owner: jotavare
- License: mit
- Created: 2023-11-10T18:03:05.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2024-06-26T23:33:12.000Z (7 months ago)
- Last Synced: 2024-11-08T23:33:30.493Z (3 months ago)
- Topics: abstraction, algorithms, cast, classes, containers, cpp, inheritance, interfaces, iterators, members, memory-allocation, oop, orthodox-canonical-class, overloading, pointers, polymorphism, templates, try-catch
- Language: C++
- Homepage:
- Size: 4.05 MB
- Stars: 3
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
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.