salut
à quoi signifie les mots this et freind en C++
salut
à quoi signifie les mots this et freind en C++
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
Ainsi que dans la FAQ :
http://cpp.developpez.com/faq/cpp/
Mon blog anglais - Mes articles et critiques de livres - FAQ C++0x, avec liste des nouveautés - Conseils sur le C++ - La meilleure FAQ du monde - Avant de créer des classes que vous réutiliserez, regardez si ça n'existe pas déjà - Le site du comité de normalisation du C++
Le guide pour bien débuter en C++ - Cours et tutoriels pour apprendre C++
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:
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 class MaClass { public: /*...*/ void foo() { /* this est inutile ici car il est implicite */ this->membre = 3; } private: int membre; };
Le mot clé friend quant à lui déclare une amitié entre une classe et (selon le cas) une autre classe ou une fonction.
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); } };
Cela revient à dire au compilateur:
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.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)
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
Partager