Questions sur C++

Fermé
man0nb - 13 mars 2010 à 17:18
 man0nb - 13 mars 2010 à 19:29
Bonjour,
Voila, je débute en C++ et j'ai besoin de vos lumières ! voici plusieurs questions sur lequelle j'ai du mal :

- Si une classe possède des attributs de type pointeur, faut-il obligatoirement ecrire un destructeur ?
- Un attribut de type pointeur est-il initialisé à NULL par le constructeur par défaut de la classe ?
- 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 ?
- Un executable C++ peut il s'executer sur n'importe quelle machine ?


Merci de vos réponse ;)

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
- 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.
1
merci, réponses très détaillées, et compréhensibles ;)
0