Bonjour,
Qu'est ce que le this ? et par quoi peut-il être remplacé ?
.....
Bonjour,
Qu'est ce que le this ? et par quoi peut-il être remplacé ?
.....
Dernière modification par 3DArchi ; 22/01/2010 à 13h22. Motif: Une bonne raison pour une aussi grande taille ?
Salut,
this désigne l'objet sur lequel la fonction (d'une classe, pas d'une fonction libre ou d'une fonction statique) est en train de s'exécuter :
Mais, vu la question, je pense que la meilleur réponse est ici.
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 class ma_classe { public : void ma_fonction(); }; void ma_classe::ma_fonction() { // this désigne l'objet sur lequel ma_fonction s'exécute } ma_classe m1; m1.ma_fonction(); // dans ma_fonction, this == &m1 ma_classe m2; m2.ma_fonction(); // dans ma_fonction, this == &m2
Curieuse question. Pourquoi vouloir le remplacer ?
Ressources proposées par 3DArchi - Les fonctions virtuelles en C++ - Cours et tutoriels C++ - FAQ C++ - Forum C++.
Il est important de noter (ça se voit dans le code de 3DArchi, par exemple) que this est un pointeur. C'est donc un *pointeur* sur l'objet courant, dans une fonction membre. Tu ne peux pas le remplacer, il est et sera toujours là dans une fonction membre d'une classe.
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++
..........
merci pour vos reponses.
aurevoir.....
Salut,
Une petite précision pour terminer.
Dans une fonction membre, l'appel à this est dit "implicite".
Cela signifie que tout ce qui s'exécute à l'intérieur d'une fonction membre s'exécute d'office sur this, s'il s'agit d'appeler une autre fonction membre ou d'accéder à un des membres de la classe.
Ainsi, si tu as une classe proche de
la fonction membre foo peut appeler bar ou accéder au membre le_membre aussi bien sous la forme de
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 class MaClass { public: void foo(); void bar(); private: int le_membre; };
que sous la forme de
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 void MaClass::foo() { bar(); le_membre = 15; }
(on préférera cependant bien souvent la première solution
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 void MaClass::foo() { this->bar(); this->le_membre *=2; })
Il y a quelques cas dans lesquels l'appel explicite à this est nécessaire, mais, si tu débute au point que le laisse penser la question, il sera toujours temps de t'en inquiéter lorsque tu envisagera d'utiliser la programmation générique![]()
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