web-dev-qa-db-fra.com

Utilisation du mot clé "this" en C ++

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;
}
57
moteutsch

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

79
orlp

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)

21
Rich

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.

9
Muad'Dib

this pointe sur l'objet dans la fonction membre de laquelle il est référé, il est donc facultatif.

5
Alok Save

Pour l'exemple ci-dessus, il est généralement omis, oui. Cependant, les deux méthodes sont syntaxiquement correctes.

3
Chad

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.

3
balki