2 réponses
Pacorabanix
Messages postés
3248
Date d'inscription
jeudi 23 août 2007
Statut
Membre
Dernière intervention
19 mai 2013
661
13 mars 2010 à 18:22
13 mars 2010 à 18:22
- Si une classe possède des attributs de type pointeur, faut-il obligatoirement ecrire un destructeur ?
non.
mais c'est conseillé en tant que bonne pratique.
En fait, si tu crées des objets avec new, il faut toujours veiller au fait qu'il doivent être détruits.
Donc si dans un de tes constructeurs tu utilise new, pense que le plus logique est d'utiliser delete dans le destructeur.
- Un attribut de type pointeur est-il initialisé à NULL par le constructeur par défaut de la classe ?
non, le constructeur par défaut ne fait rien sur les variables (à part leur créer un espace mémoire). C'est comme n'importe quel variable déclarée dans une fonction, sa valeur au départ est indéterminée. Mieux vaut, encore une fois, prendre la bonne pratique d'initialiser toutes les variables dans un constructeur de base.
- Si on veut surcharger l'opérateur << pour afficher les caractéristiques d'un objet CToto, faut-il écrire une méthode d'instance dans la classe CToto qui surcharge d'opérateur ?
puisque << prend comme premier argument un ostream& (et renvoie un &ostream) (sauf erreur), il faut mieux créer une fonction friend à l'extérieur de la classe. Là je ne suis plus tout à fait sûr, je réponds vite fait, je te conseille d'attendre un autre avis (ou de chercher dans n'importe quelle FAQ ou manuel C++)
- Un executable C++ peut il s'executer sur n'importe quelle machine ?
non. Aucun exécutable ne peut s'exécuter sur n'importe quelle machine dans l'absolu, puisqu'un exécutable est écrit en langage machine, et ce langage dépend justement du processeur / système.
Par contre le C++ est une norme faite de sorte qu'il peut être compilé spécifiquement pour n'importe quelle machine à priori (PC, mac/unix, stations sun, robots/micro-controlleurs, téléphones, console de jeu,...). Il faut juste trouver le bon compilateur qui fait ce que tu désires. Donc si tu codes ton programme avec des fonctions et des bibliothèques "portables", tu n'auras qu'à compiler ton programme une fois pour pc ( x86) et pour une fois pour mac par exemple.
Ce que je vex dire par "portable", c'est que certaines bibliothèques fournissent des fonctions qui ne peuvent s'appliquer que pour un certain système. Exemple : #include <string> ou #include <iostream> ne poseront pas de problèmes de portabilité, par contre #include "windows.h" fera que ton programme est compilable seulement pour une machine avec windows dessus, les fonctions de cette bibliothèque ne fonctionneront pas sur un autre système.
non.
mais c'est conseillé en tant que bonne pratique.
En fait, si tu crées des objets avec new, il faut toujours veiller au fait qu'il doivent être détruits.
Donc si dans un de tes constructeurs tu utilise new, pense que le plus logique est d'utiliser delete dans le destructeur.
- Un attribut de type pointeur est-il initialisé à NULL par le constructeur par défaut de la classe ?
non, le constructeur par défaut ne fait rien sur les variables (à part leur créer un espace mémoire). C'est comme n'importe quel variable déclarée dans une fonction, sa valeur au départ est indéterminée. Mieux vaut, encore une fois, prendre la bonne pratique d'initialiser toutes les variables dans un constructeur de base.
- Si on veut surcharger l'opérateur << pour afficher les caractéristiques d'un objet CToto, faut-il écrire une méthode d'instance dans la classe CToto qui surcharge d'opérateur ?
puisque << prend comme premier argument un ostream& (et renvoie un &ostream) (sauf erreur), il faut mieux créer une fonction friend à l'extérieur de la classe. Là je ne suis plus tout à fait sûr, je réponds vite fait, je te conseille d'attendre un autre avis (ou de chercher dans n'importe quelle FAQ ou manuel C++)
- Un executable C++ peut il s'executer sur n'importe quelle machine ?
non. Aucun exécutable ne peut s'exécuter sur n'importe quelle machine dans l'absolu, puisqu'un exécutable est écrit en langage machine, et ce langage dépend justement du processeur / système.
Par contre le C++ est une norme faite de sorte qu'il peut être compilé spécifiquement pour n'importe quelle machine à priori (PC, mac/unix, stations sun, robots/micro-controlleurs, téléphones, console de jeu,...). Il faut juste trouver le bon compilateur qui fait ce que tu désires. Donc si tu codes ton programme avec des fonctions et des bibliothèques "portables", tu n'auras qu'à compiler ton programme une fois pour pc ( x86) et pour une fois pour mac par exemple.
Ce que je vex dire par "portable", c'est que certaines bibliothèques fournissent des fonctions qui ne peuvent s'appliquer que pour un certain système. Exemple : #include <string> ou #include <iostream> ne poseront pas de problèmes de portabilité, par contre #include "windows.h" fera que ton programme est compilable seulement pour une machine avec windows dessus, les fonctions de cette bibliothèque ne fonctionneront pas sur un autre système.