Использование ключевого слова "this" в C++ [дубликат]


Возможные Дубликаты:
чрезмерное использование этого в C++ код
когда следует использовать ключевое слово "this" В C++?
есть ли причина использовать это ->

в C++, это ключевое слово this обычно опускается? Например:

Person::Person(int age) {
    _age = age;
}

против:

Person::Person(int age) {
    this->_age = age;
}
6   51  

6 ответов:

Да, это не требуется и обычно опускается. Это может потребоваться для доступа к переменным после их переопределения в области видимости, хотя:

Person::Person() {
    int age;
    this->age = 1;
}

кроме того, это:

Person::Person(int age) {
    _age = age;
}

Это довольно плохой стиль; Если вам нужен инициализатор с тем же именем, используйте эту нотацию:

Person::Person(int age) : age(age) { }

это предпочтения программиста. Лично я люблю использовать this Так как он явно отмечает элементы объекта. Конечно же _ делает то же самое (только когда вы будете следовать конвенции)

this указывает на объект, в функции-члене которого он указан, поэтому он является необязательным.

в любом случае работает, но во многих местах есть стандарты кодирования, которые будут направлять разработчика так или иначе. Если такой политики нет, просто следуйте своему сердцу. Одна вещь, хотя, это действительно помогает читабельности кода, если вы используете его. особенно если вы не следуете соглашению об именовании имен переменных уровня класса.

в приведенном выше примере он обычно опущен, да. Однако в любом случае синтаксически правильно.

да. если есть неоднозначность.

Он также используется иногда, чтобы избежать некоторых компиляторов оптимизации вызова виртуальной функции.