Skip to content

Exploring the essence of nine C++ modules. (memory management, OOP programming, I/O and file streams, operator overloading, templates/generics, containers, ...).

License

Notifications You must be signed in to change notification settings

jotavare/cpp_modules

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

62 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Linkedin 42

AboutRulesForbiddenLicense

ABOUT

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.

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 `<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;

LICENSE

This work is published under the terms of Unlicense.