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 :

Pointeur sur instance


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 94
    Par défaut Pointeur sur instance
    Salut à tous le monde,
    J'ai un petit pb de compréhension sur les pointeurs.
    En fait selon ce que je sais que les langages orientés objets ont l'avantage de l'autogestion de la mémoire grâce au garbage collector(avec J2EE et .NET).
    Mais ce que je vois et que le C++, qui n'est pas de la plateforme .NET, conserve encore la notion de pointeur notamment les pointeurs sur les instances et peut être autres.
    Est ce que qq'un peut me convaincre et de m'éclaircir ceci.
    Merci d'avance.

  2. #2
    Membre émérite Avatar de MatRem
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    750
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 750
    Par défaut
    Le garbage collector n'est pas une caractéristique d'un langage objet.

    Si tu veux comprendre ce que sont les pointeurs en c++, je crois que les docs sont nombreuses sur le sujet ... http://www.google.fr/search?hl=fr&q=...e+Google&meta=

    En fait ta question c'est "pourquoi le c++ ne possède pas de garbage collector ?" ?

  3. #3
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    Il en aura un dans la prochaine norme si mes souvenirs sont bons...

  4. #4
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Citation Envoyé par poukill
    Il en aura un dans la prochaine norme si mes souvenirs sont bons...
    Au dernières nouvelles, il n'y en aura pas.

  5. #5
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 94
    Par défaut
    Citation Envoyé par MatRem
    En fait ta question c'est "pourquoi le c++ ne possède pas de garbage collector ?" ?
    Est ce qq'un peut répondre à cette question.
    Merci.

  6. #6
    Membre éprouvé Avatar de alexrtz
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2003
    Messages
    639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2003
    Messages : 639
    Par défaut
    Citation Envoyé par Fahmi06
    Est ce qq'un peut répondre à cette question.
    Merci.
    Manque de perfs (quand le C++ a été conçu, toutes les machines n'avaient pas des processeurs à 2Gh et 2Go de RAM ).

  7. #7
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Citation Envoyé par Fahmi06
    Est ce qq'un peut répondre à cette question.
    Merci.
    Historiquement, C++ est une extension du C qui a grandi, le C n'ayant pas de GC il a commencé sans et il n'a jamais été ajouté. Il y a des choses héritées du C qui font qu'un GC est problèmatique. Par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        T* ptr = new T;
        unsigned long x = reinterpret_cast<unsigned long>(ptr) ^ 0xDEADBEAF;
        ptr = NULL;
        ...
        T* ptr = reinterpret_cast<T*>(x ^ 0xDEADBEAF);
    est valide. De même qu'écrire un pointeur dans un fichier sous une forme adéquate plutôt que le camoufler dans x. Et il y a du code qui utilise ces choses (en particulier, de la gestion de liste doublement chaînée en ne stockant que la valeur d'un pointeur, ou de l'ajout de drapeaux dans les bits des pointeurs garantis à 0 par l'alignement).

    Il y a aussi des optimisations qui peuvent être problématique.

    En pratique certains utilisent des GC externes (celui de Boehm ou celui de certains vendeurs) avec du C++ sans problèmes. Mais pour introduire un GC dans la norme, il faut régler ces problèmes, et d'autres (que fait-on des destructeurs, à partir du moment où on a un GC, on veut pouvoir le contrôler, avec des pointeurs weak, avec des finaliseurs -- en quoi est-ce différent des destructeurs).

    Il y a donc des gens opposés au GC pour diverses raisons, avec une intensité différentes (certains n'en veulent pas et s'opposent par tout moyen; d'autres veulent qu'avant d'introduire un GC, il faut que tout ce qu'on peut désirer soit disponible et que tous les problèmes potientiels résolus; d'autres qui jugent les GC pas assez important pour valoir le temps que la résolution des problèmes à résoudre prend au comité, et j'en passe). De même il y a des gens qui sont pour pour différentes raisons. Ensuite tu les mets dans une salle et tu ajoutes la part de politique habituelle (si tu appuyes ma position sur le GC, j'appuye ta proposition...; ce sont les nations qui ont les voix ce qui fait des effets à deux niveaux et donnent à certains une forte importance parce qu'ils représentent tout seul leur nation, ...)

    Lors de la nomalisation qui s'est achevée fin 97, les opposants ont "gagné". L'ajout d'un GC était tout à fait hors de question dans le cadre de la normalisation qui s'est achevée en 2003 (on ne désirait que fixer les bugs de la norme). Pour celle en cours, il y avait une proposition. Les opposants ont gagné la dernière bataille en proposant que la définition d'un GC soit reportée à un TR ultérieur. Mais tout n'est pas absolument joué.

  8. #8
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Par défaut
    C++ [...] conserve encore la notion de pointeur
    En fait, dans la plupart des langages impératifs "modernes", toutes les variables (ou seulement celles dont le type est une classe pour certains) sont en fait des pointeurs.

  9. #9
    Membre émérite Avatar de valefor
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    711
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 711
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    T* ptr = new T;
        unsigned long x = static_cast<unsigned long>(ptr) ^ 0xDEADBEAF;
        ptr = NULL;
        ...
        T* ptr = static_cast<unsigned long>(x ^ 0xDEADBEAF);
    Tu ne voulais pas plutôt écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    T* ptr = new T;
        unsigned long x = static_cast<unsigned long>(ptr) ^ 0xDEADBEAF;
        ptr = NULL;
        ...
        T* ptr = static_cast<T *>(x ^ 0xDEADBEAF);
    ?

    C'est pas pour faire mon maitre capello, mais j'essaie de comprendre l'exemple...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récupérer le pointeur sur l'instance
    Par FrançoisLaterite dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 15/05/2014, 15h28
  2. Probleme de pointeur sur une fonction
    Par nicky78 dans le forum C
    Réponses: 2
    Dernier message: 23/05/2004, 20h26
  3. [MFC] Problème pointeur sur une classe
    Par mick74 dans le forum MFC
    Réponses: 7
    Dernier message: 14/04/2004, 14h17
  4. [allegro]passage de pointeur sur image
    Par Gonath dans le forum Autres éditeurs
    Réponses: 3
    Dernier message: 13/12/2003, 18h47
  5. Declaration de fonction retournant un pointeur sur fonction
    Par pseudokifaitladifférence dans le forum C
    Réponses: 5
    Dernier message: 11/08/2003, 19h37

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