Systèmes2025TerminéDépôt privé
/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* Zombie.cpp :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: lkantzer <lkantzer@student.42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/12/12 13:31:50 by lkantzer #+# #+# */ /* Updated: 2025/12/15 09:02:22 by lkantzer ### ########.fr */ /* */ /* ************************************************************************** */
CPP Modules
Passer du C à l'objet, un module à la fois
Les modules C++ de 42, en C++98 strict : pile contre tas, référence contre pointeur, pointeurs sur fonctions membres.
C++98MakefilePointeurs sur membresRéférences
- 01
- module
- 7
- exercices
- C++98
- norme
Comment ça marche
Le module 01, exercice par exercice
Le module tourne autour d'une seule question : où vit l'objet, et qui le détruit. Chaque exercice l'attaque sous un angle différent.
- ex00 · Zombie
- Le même zombie créé de deux façons : newZombie le rend sur le tas et laisse l'appelant faire le delete, randomChump le pose sur la pile et le laisse mourir en sortant de la fonction.
- ex01 · zombieHorde
- N zombies alloués en un seul new[], nommés après coup par setName — puisqu'un tableau ne peut appeler que le constructeur par défaut.
- ex02 · brain
- Une chaîne, son adresse, un pointeur et une référence dessus : trois façons d'écrire la même adresse et la même valeur.
- ex03 · Weapon
- HumanA tient l'arme par référence, HumanB par pointeur. Changer le type de l'arme après coup se voit chez les deux : ils pointent la même.
- ex04 · replace
- Un sed de pauvre : le fichier est relu ligne à ligne et réécrit dans <fichier>.replace, en remplaçant s1 par s2 sans jamais utiliser std::string::replace.
- ex05 · Karen
- Quatre plaintes, quatre méthodes privées, et un tableau de pointeurs sur fonctions membres pour appeler la bonne à partir du niveau demandé.
- ex06 · karenFilter
- Le même filtre en switch, cette fois sans break : demander WARNING affiche warning puis error, et un niveau inconnu tombe dans le default.
Sept binaires distincts, jamais une bibliothèque commune : c'est le même sujet repris sept fois, pas un programme qui grossit.
En bref
- 01C++98 imposé, compilé en -Wall -Wextra -Werror sur chaque exercice
- 02Sept exercices rendus, un Makefile et un binaire par exercice
- 03Un tableau de pointeurs sur fonctions membres à la place d'une chaîne de if
- 04Le même filtre de logs réécrit en switch pour obtenir la cascade de niveaux
Le point dur
Référence ou pointeur, ce n'est pas un détail de style
HumanA reçoit son arme par référence : il en a forcément une, et elle ne peut plus changer d'identité. HumanB la tient par pointeur, parce qu'il peut très bien commencer sans arme — le choix du type dit la règle métier.