C++ - créer un objet statique ou dynamique?

Résolu
nikoladu49 Messages postés 228 Date d'inscription   Statut Membre Dernière intervention   -  
 ouma -
Bonjour,
je voudrais savoir quand créer, en c++, un objet statiquement, et quand créer plutôt un objet dynamiquement.
Pouvez vous m'expliquer?
Merci d'avance.
A voir également:

7 réponses

grou29 Messages postés 39 Date d'inscription   Statut Membre Dernière intervention   9
 
ok.
En général tu fais une allocation statique quand tu n'as pas besoin de l'objet après la sortie de ta méthode car l'objet est détruit a la sortie.
tu fais un new si tu veux gérer toi même la destruction de l'objet (avec delete)
dans une autre méthode.
clair ?

-
Grou29
http://lienssanslien.free.fr
3
ouma
 
merci
0
Pacorabanix Messages postés 3248 Date d'inscription   Statut Membre Dernière intervention   663
 
il y a aussi le fait que des fois, on ne sait pas de combien d'objets on a besoin.
Alors tu as deux possiblités :

soit tu crées assez d'objets "statiquement" dans ton programme pour être sûr d'avoir une certaine flexibilité,

soit tu crées tes objets "dynamiquement" à la demande.

Imagine un carnet d'adresses.
Peut être qu'un utilisateur du programme aura une dizaine d'adresse dans son carnet, peut-être qu'un autre en aura 1000.

Si tu fais statiquement, le programme consommera la même mémoire dans le cas des 10 que dans le cas des 1000, car tu auras dû prévoir la place pour mille variables.
Alors que dynamiquement le fait d'avoir seulement dix noms utilisera beaucoup moins de mémoire.
1
nikoladu49 Messages postés 228 Date d'inscription   Statut Membre Dernière intervention   22
 
Je me permet de faire faire un petit up. Je sais que le sujet date un peu mais j'attend toujours un réponses.

Merci d'avance.
0
grou29 Messages postés 39 Date d'inscription   Statut Membre Dernière intervention   9
 
Peux être peux tu préciser ce que tu entends par "statiquement" (objet global, objet statique a un fichier, statique a une classe (agrégation) ...)

-
Grou29
http://lienssanslien.free.fr
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
nikoladu49 Messages postés 228 Date d'inscription   Statut Membre Dernière intervention   22
 
Et bien quand je dit statique, c'est par exemple:
classe objet(parametres);

et quand je dit dynamiquement, je veux dire:
classe *objet = new classe(parametres);


Ma question est donc: quand utiliser une des deux méthodes ci-dessous, et quand utiliser l'autre pour l'initialisation de mes objets?

J'espère que tu comprend mieux.
0
nikoladu49 Messages postés 228 Date d'inscription   Statut Membre Dernière intervention   22
 
Si on crée un objet statiquement ou dynamiquement, on en crée un seul pourtant. Par exemple si on prend les widgets de Qt, on les crée dynamiquement alors que l'on sais combien de widget on va créer.
0
grou29 Messages postés 39 Date d'inscription   Statut Membre Dernière intervention   9
 
En général (je ne connais pas bien Qt mais ca s'applique dans beaucoup de framework graphique) tu est responsable de la création des widgets et du délègue la destruction au framework (Qt ici). C'est donc bien un cas de création /destruction qui sont délocalisés.
0
Pacorabanix Messages postés 3248 Date d'inscription   Statut Membre Dernière intervention   663
 
tout à fait, ce que je disais était à ajouter à ce que disait grou29, c'est tout :)
0
nikoladu49 Messages postés 228 Date d'inscription   Statut Membre Dernière intervention   22
 
A, d'accord, je comprend mieux :)
Merci à vous pour vos réponses.
0