Duplicate possible:
ne utilisation excessive de ceci en C++ est-elle une odeur de code
Quand faut-il utiliser le mot-clé "this" en C++?
Y a-t-il une raison d'utiliser ceci ->
En C++, le mot clé this
est-il généralement omis? Par exemple:
Person::Person(int age) {
_age = age;
}
Par opposition à:
Person::Person(int age) {
this->_age = age;
}
Oui, ce n'est pas obligatoire et est généralement omis. Cela peut être nécessaire pour accéder aux variables après leur remplacement dans la portée:
Person::Person() {
int age;
this->age = 1;
}
En outre, ceci:
Person::Person(int _age) {
age = _age;
}
C'est assez mauvais style; si vous avez besoin d’un initialiseur portant le même nom, utilisez cette notation:
Person::Person(int age) : age(age) {}
Plus d'infos ici: https://en.cppreference.com/w/cpp/language/initializer_list
C'est la préférence du programmeur. Personnellement, j'adore utiliser this
car il marque explicitement les membres de l'objet. Bien sûr le _
fait la même chose (seulement quand vous suivez la convention)
Les deux méthodes fonctionnent, mais de nombreux endroits ont mis en place des normes de codage qui guideront le développeur dans un sens ou dans l’autre. Si une telle politique n'est pas en place, suivez votre cœur. Une chose, cependant, cela aide VRAIMENT la lisibilité du code si vous l'utilisez. surtout si vous ne suivez pas une convention de dénomination sur les noms de variables de niveau classe.
this
pointe sur l'objet dans la fonction membre de laquelle il est référé, il est donc facultatif.
Pour l'exemple ci-dessus, il est généralement omis, oui. Cependant, les deux méthodes sont syntaxiquement correctes.
Oui. à moins qu'il y ait une ambiguïté.
Il est également parfois utilisé pour éviter que certains compilateurs optimisent l'appel de fonction virtuelle.