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

SL & STL C++ Discussion :

[debutant] std::auto_ptr<>


Sujet :

SL & STL C++

Vue hybride

Meno [debutant]... 24/10/2005, 14h51
10_GOTO_10 C'est un template de la STL 24/10/2005, 15h07
Meno Euh désolé mais je ne... 24/10/2005, 15h20
10_GOTO_10 La STL, c'est la Standard... 24/10/2005, 15h41
Meno Merci je comprends bien mieux... 24/10/2005, 15h46
Luc Hermitte Attention à un truc,... 24/10/2005, 22h10
Aurelien.Regat-Barrel La FAQ parle de auto_ptr:... 25/10/2005, 10h07
Luc Hermitte Hum. J'avais oublié que... 26/10/2005, 00h37
Aurelien.Regat-Barrel c'est noté :D 26/10/2005, 10h27
Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 21
    Par défaut [debutant] std::auto_ptr<>
    Bonjour tout le monde,
    je m'inspire d'un programme pour utiliser sqlite3 et j'ai trouvé ceci dans le programme hors je ne vois pas du tout ce que cela veut dire. Si quelqu'un pouvait m'aider. :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     std::auto_ptr<TList> mpResults;
        std::auto_ptr<TList> mpFieldNames;
    Merci à vous

  2. #2
    Membre émérite Avatar de 10_GOTO_10
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    890
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 890
    Par défaut
    C'est un template de la STL

    auto_ptr
    template<class T>
    class auto_ptr {
    public:
    typedef T element_type;
    explicit auto_ptr(T *p = 0) throw();
    auto_ptr(const auto_ptr<T>& rhs) throw();
    auto_ptr<T>& operator=(auto_ptr<T>& rhs) throw();
    ~auto_ptr();
    T& operator*() const throw();
    T *operator->() const throw();
    T *get() const throw();
    T *release() const throw();
    };
    The class describes an object that stores a pointer to an allocated object of type T. The stored pointer must either be null or designate an object allocated by a new expression. The object also stores an ownership indicator. An object constructed with a non-null pointer owns the pointer. It transfers ownership if its stored value is assigned to another object. The destructor for auto_ptr<T> deletes the allocated object if it owns it. Hence, an object of class auto_ptr<T> ensures that an allocated object is automatically deleted when control leaves a block, even via a thrown exception.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 21
    Par défaut
    Euh désolé mais je ne comprends pas trop l'intérêt alors si tu pouvais développer un petit peu, merci.

  4. #4
    Membre émérite Avatar de 10_GOTO_10
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    890
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 890
    Par défaut
    La STL, c'est la Standard Template Librairie. Regarde dans la FAQ ici

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 21
    Par défaut
    Merci je comprends bien mieux maintenant

  6. #6
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 292
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 292
    Par défaut
    Attention à un truc, std::auto_ptr<> un pointeur dit intelligent très particulier. Il n'est pas à comptage de référence, mais avec une sémantique de déplacement.
    Copier un auto_ptr<> va transférer la responsabilité du pointeur contenu vers le nouvel auto_ptr<> qui sert de receptacle.

    C'est très utile pour écrire du code simple qui ne fuit pas en cas d'exception. Expliquer auto_ptr<> risquerait de prendre un peu pas mal de temps.
    Je t'invite à consulter les bouquin de Scott Meyers ou Herb Sutter. Pour ce dernier, tu trouveras des explications sur Guru Of the Week (GOTW).
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  7. #7
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3

  8. #8
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 292
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 292
    Par défaut
    Hum. J'avais oublié que c'était dans la FAQ.
    Un mini commentaire pourrait éventuellement être rajouté au fait que cela se prête bien aux fonctions "source" et aux fonctions "puit".

    Une fonction qui prend un auto_ptr<> en paramètre signale qu'elle s'empare de la responsailité du pointeur et libèrera la donnée pointée. Assez pratique vu que doxygen a des tags [in], [out], [in,out] mais pas [sink], et qu'il faut parfois aller chercher loin dans du code ou une API pour savoir ce que fait un callback du pointeur qu'on lui donne...

    Une fonction qui renvoie un auto_ptr<> signale clairement qu'elle alloue un nouvel objet qu'il faudra penser à libérer.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  9. #9
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    c'est noté

Discussions similaires

  1. [c++ --> java] std::auto_ptr<>
    Par nayaphykit dans le forum SL & STL
    Réponses: 5
    Dernier message: 31/03/2008, 17h04
  2. [c++ --> java] std::auto_ptr<>
    Par nayaphykit dans le forum Langage
    Réponses: 4
    Dernier message: 31/03/2008, 15h17
  3. [Débutant] r-mean(r)<2*std(r) --> graph ?
    Par Caro3995 dans le forum MATLAB
    Réponses: 5
    Dernier message: 15/11/2006, 23h23
  4. std::auto_ptr et delete[]
    Par Herode dans le forum SL & STL
    Réponses: 11
    Dernier message: 14/02/2006, 22h56

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