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 :

les mots This et friend


Sujet :

C++

  1. #1
    Membre habitué
    Inscrit en
    Juin 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 8
    Par défaut les mots This et friend
    salut
    à quoi signifie les mots this et freind en C++

  2. #2
    Membre chevronné

    Homme Profil pro
    Développeur mobile iOS / Android
    Inscrit en
    Décembre 2008
    Messages
    259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur mobile iOS / Android
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 259
    Par défaut
    Salut

    jette un peu un œil là dessus http://cpp.developpez.com/cours/polyCpp/

    Tu y trouvera tes réponses.
    « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell

    N'oubliez pas de consulter les FAQ Swift, Android
    Tutoriel : Développer une application multilingue sous iOS

  3. #3
    Alp
    Alp est déconnecté
    Expert confirmé

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par défaut
    Ainsi que dans la FAQ :
    http://cpp.developpez.com/faq/cpp/

  4. #4
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Salut,

    Pour faire simple, this est un pointeur sur l'objet en cours d'utilisation, lorsque tu te trouve dans une fonction membre.

    Le seul cas où il est réellement intéressant de l'utiliser, c'est lorsque tu dois passer un pointeur (ou une référence, mais il s'agira alors de le "déréférencer") à une fonction (non membre) qui en a besoin.

    Ainsi, le code suivant serait tout à fait inutile:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    class MaClass
    {
        public:
            /*...*/
            void foo()
            {
                /* this est inutile ici car il est implicite */
                this->membre = 3;
            }
        private:
            int membre;
    };
    Par contre, il sera indispensable de l'utiliser dans un code proche de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    /*une fonction qui utilise un pointeur sur un objet de type MaClass */
    void foo(Maclass * c)
    {
        /*...*/
    }
    /* ou une fonction qui utilise une référence (éventuellement constante)
     * sur un objet de type MaClass
     */
    void bar (MaClass /*const*/ & c)
    {
        /*...*/
    }
    class MaClass
    {
        public:
            /*...*/
            void doSomething()
            {
                foo(this);
                bar(*this);
            }
    };
    Le mot clé friend quant à lui déclare une amitié entre une classe et (selon le cas) une autre classe ou une fonction.

    Cela revient à dire au compilateur:
    Je fais suffisamment confiance à la classe ou à la fonction pour lui donner l'accès à ce que je cache normalement aux autres classes et fonctions externes (en gros, à tout ce qui est déclaré private ou protected)
    Utilisée intelligemment, l'amitié est de nature à renforcer l'encapsulation en évitant de créer des accesseurs ou des mutateurs qui n'auraient normalement pas lieu d'être.

    Par contre, si tu l'utilise mal (entre autre, en déclarant trop d'amitiés), tu finira par obtenir l'inverse, trop de classes et de fonctions ayant accès à des choses auxquelles elles n'auraient jamais du réellement avoir accès

    Reporte toi à la FAQ (dont les liens ont été donnés plus haut) pour en apprendre d'avantage
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

Discussions similaires

  1. comment crypter les mots de passe?
    Par JauB dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 23/11/2005, 16h37
  2. [Collections]Compter les mots différents d'une ArrayList
    Par alanpix dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 21/11/2005, 22h11
  3. cacher les mots de passes...
    Par youp_db dans le forum C
    Réponses: 7
    Dernier message: 21/10/2005, 00h06
  4. Auto-complétion pour les mots clés Begin/End
    Par Alex Laforest dans le forum EDI
    Réponses: 2
    Dernier message: 21/09/2005, 21h26
  5. Le dossier qui stock les mots de passe
    Par cartonis dans le forum Sécurité
    Réponses: 21
    Dernier message: 17/08/2005, 12h49

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