IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Question sur les pointeurs.


Sujet :

C++

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2005
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Question sur les pointeurs.
    Bonjour à tous,

    J'ai un petit problème avec les pointeurs sur les objets. En effet je comprends pas trop la différence ou plutôt l'utilité de déclarer un pointeur sur un objet par rapport à une déclaration statique.

    Ex :

    Objet p; // va créer un objet statique
    Objet* p = new(objet) // qui crée un objet dynamique

    Quelles sont les différences d'utilisations, ce qu'apport une création dynamique par rapport à la déclaration statique mise à par la mémoire biensur.

    Voilà j'espère avoir été assez clair sinon je tenterais de faire mieux.

    Cordialement

    Christophe

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    eh bien, en dynamique, tu peux constituer au fur et à mesure une liste d'objets, sans en connaitre la taille maximale à l'avance.

    Egalement, cela pose parfois moins de problèmes d'ordre d'inclusion des fichiers d'en-tête ou d'inclusion de fichier d'en-tête dans un autre fichier d'en-tête... (sauf pour les fonctions inlines ou les templates, évidemment)
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    40
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2005
    Messages : 40
    Points : 48
    Points
    48
    Par défaut dynamique ou statique
    Il a raison, linteret du dynamique c'est que c'est dynamique ! donc tu peux allouer "de la place" pour une nouvelle structure n'importe ou dans ton programme, alors qu'en statique, tu ne peux en voir que le nombre que tu a défini.
    C'est sur que si tu n'as besoin que d'une structure, la déclarer en statique n'est pas forcément idiot.

  4. #4
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    Ca dépend de la durée de vie que tu veux sur l'objet:
    Si l'objet est local à une fonction , sa durée de vie est limitée à la fonction: il est détruit à la fin
    Alors, si tu as besoin d'une durée de vie plus longue :
    ou l'objet est global mais c'est une programmation perverse
    ou tu l'alloue dynamiquement.
    De toute façon, quelle que soit la manière de créer l'objet, on a souvent besoin d'un pointeur sur l'objet pour utiliser le polymorphisme
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2005
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Ok merci à vous pour vos premières réponses.

    Concernant l'aspect durée de vie ca j'avais bien compris, cependant je suis pas tout à fait d'accord avec l'affirmation suivante ( à tord peut-être )

    Il a raison, linteret du dynamique c'est que c'est dynamique ! donc tu peux allouer "de la place" pour une nouvelle structure n'importe ou dans ton programme, alors qu'en statique, tu ne peux en voir que le nombre que tu a défini.
    C'est sur que si tu n'as besoin que d'une structure, la déclarer en statique n'est pas forcément idiot.
    En effet je peux créer autant d'instance d'objet que je veux,sans les déclarer dynamiquement, mais je pense que tu parlais des cas des listes chainées ou des tableaux dynamiques je pense.

    diogene -> je crois que c'est l'idée que je cherchais le polymorphisme tu peux me détailler un peu ta dernière phrase avec un exemple qui reflete l'utilité d'un pointeur dans ce cas, merci à toi .

  6. #6
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    Le polymorphisme ne marche qu'à partir des pointeurs sur les classes, pas à partir des classes
    Supposons que j'ai une collection d'objets de type différent mais possédant des caractéristiques communes ou des comportements analogues. Naturellement, je construit une classe de base Base recensant ces caractéristiques et comportements. Ce peut être à partir de données membres communes et de fonctions virtuelles. Les objets eux-même sont obtenus à partir de classes dérivées Deriv de cette classe. Elles spécialisent le comportement de chaque objet notamment en redéfinissant éventuellement les fonctions virtuelles.
    Je construis mes objets, dynamiquement ou non, à partir des classes Deriv. Les pointeurs sur ces objets sont des pointeurs sur les Deriv, mais peuvent être transformés en pointeurs sur Base, chaque objet dérivant de Base. Alors, je peux construire ma collection d'objets à partir d'une collection de pointeurs sur Base, mais pas comme une collection de Base, les objets n'étant pas du type Base. L'interressant, est que si j'appelle une fonction virtuelle à partir de ce pointeur sur Base, c'est la fonction redéfinie de Deriv qui est automatiquement appelée sans que j'ai à me soucier quel était le type véritable de l'objet.
    Mais, il y a une abondante littérature expliquant le sujet (y compris bien sûr sur ce site)
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

Discussions similaires

  1. Simple question sur les pointeurs
    Par Clad3 dans le forum C++
    Réponses: 9
    Dernier message: 29/06/2006, 01h05
  2. Question sur les pointeurs génériques
    Par mikedavem dans le forum C
    Réponses: 16
    Dernier message: 24/05/2006, 11h56
  3. question sur les pointeurs
    Par jd.baculard dans le forum Langage
    Réponses: 3
    Dernier message: 18/03/2006, 02h30
  4. [Debutant] Nouvelle question sur les pointeurs
    Par etiennegaloup dans le forum Débuter
    Réponses: 3
    Dernier message: 11/01/2006, 09h55
  5. questions sur les pointeurs
    Par Hyoga dans le forum C++
    Réponses: 17
    Dernier message: 08/01/2005, 23h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo