About • Rules • Forbidden • Contributing • License
Resources | Description |
---|---|
References | All the references i used to study C++. |
Modules | Description |
---|---|
CPP 00 | Understand the specificities of the language when compared to C. |
CPP 01 | Memory allocation, reference, pointers to members and the usage of the switch. |
CPP 02 | Ad-hoc polymorphism, overloads and orthodox canonical classes. |
CPP 03 | Inheritance. |
CPP 04 | Subtype polymorphism, abstract classes and interfaces. |
CPP 05 | Try/Catch and Exceptions. |
CPP 06 | Different casts. |
CPP 07 | Templates. |
CPP 08 | Templated containers, iterators and algorithms. |
CPP 09 | Containers. |
- 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;
- 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 `<ns_name>` 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 `<algorithm>` 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;
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.
This project is available under the MIT License. For further details, please refer to the LICENSE file.