# Bienvenue

Bienvenue sur ce cours de C++ (version C++2017) !

Il est destiné aux personnes ayant déjà programmé dans d'autres langages, et de préférence avec une mini-expérience en C ou en C++ : les concepts de fonctions, variables, types, classes et pointeurs ne seront pas expliqués.

J'ai présenté ce cours à l'oral, donc le contenu en ligne est assez théorique : je vous invite à regarder d'autres exemples si nécessaire et à essayer les challenges proposés. J'ai également créé un dépôt GitHub où je propose quelques exercices : [https://github.com/Dwarfobserver/Exercices-Cpp](https://github.com/Dwarfobserver/Exercices-Cpp) . Il faut compléter le code pour passer tous les tests. Ce dépôt contient également les solutions des challenges.

Les challenges ne sont pas triviaux, et touchent généralement à plusieurs cours à la fois.

Le cours est organisé en petits chapitres classés dans une de ces trois catégories :

* Le langage : La compilation, les librairies, les Undefined Behaviors, ...
* Les abstractions : L'orienté objet, les templates, les exceptions, la concurrence, ...
* Les performances : Les accès mémoire, la vectorisation, le temps de compilation, ...



Si vous ne savez pas quoi lire en particulier, voici l'ordre dans lequel je les ai présentés :

1. Langage           - la compilation
2. Abstractions    - l'orienté objet
3. Performances - introduction
4. Performances - les accès mémoire
5. Performances - les options du compilateur
6. Abstractions    - les templates (1/2)
7. Performances - les indices du compilateur
8. Performances - la vectorisation
9. Langage           - les catégories de classes
10. Abstractions    - les move & smart pointers
11. Abstractions    - les exceptions
12. Langage           - les Undefined Behaviors
13. Abstractions    - les lambdas & opérateurs
14. Abstractions    - le multithreading
15. Abstractions    - les templates (2/2)
16. Language         - les bibliothèques
17. Performances - le temps de compilation



Si vous avez des questions, des remarques ou autre, vous pouvez me contacter via mon adresse mail : sidney.congard@gmail.com
